Bitcoin-Core

記憶體池和 UTXO 池使用了多少記憶體(RAM)

  • October 12, 2017

我知道我可以-dbcache=<MB>在啟動 bitcoind 時進行設置。

這是否會影響為 UTXOPool 或 UTXOPool + mempool 分配多少 RAM?

我如何知道每個數據庫在 RAM 中佔用多少 RAM?

如果 UTXO 池為 2.7GB,並且我設置-dbcache=4096了 ,那麼分配的其餘記憶體會怎樣?

在 Bitcoin Core 中,有兩個設置,-dbcache-maxmempool,分別預設為 450 和 300。

mempool 只能佔用通過-maxmempool.

UTXO 集記憶體可以佔用配置的數量-dbcache 加上目前未使用的已配置記憶體池空間量。然而,記憶體使用量遠高於磁碟上的等效表示 - 在說話時載入整個 UTXO 集將需要 6-7 GiB。

記憶體中的表示總是更大。在磁碟上,它們只是打包的字節序列。在記憶體中,有索引和指針,還有記憶體分配成本——所有這些都是為了加快訪問速度。UTXO 數據的膨脹係數大於記憶體。

從 0.14 開始,記憶體池也在關機時保存到磁碟(但不是連續保存)。

到目前為止,沒有對 UTXO 記憶體進行優先級排序。我們只是保留所有訪問過的條目,當它變得太大時,所有修改過的條目都會寫入磁碟。一個(非常)重要的優化是,當一個 UTXO 被創建然後被使用時,沒有被寫入磁碟,我們只是將它從記憶體中刪除。

引用自:https://bitcoin.stackexchange.com/questions/60608