いくつかのテストを行ったところ、zookeeper が最後の 500 個の削除済みノードをクリーンアップしていないようです。
私のテストでは、ノードを作成し、作成後に各ノードを削除しました。この手順を 1000 回繰り返してから、完全な GC をトリガーしました。これらは結果です
Creating 1000 Nodes and deleting 1000 Nodes and each node has... ...1000kb data = 529MB heap used after FullGC ...500kb data = 281MB heap used after FullGC ...256kb data = 140MB heap used after FullGC ...128kb data = 68MB heap used after FullGC
1000kb のデータごとに 1000 個のノードを作成してからノードを削除し、その後 128kb のデータで 1000 個のノードを作成してノードを再度削除すると、68MB のヒープ領域が使用されます。
そのため、Zookeeper は最後の 500 個の削除されたノードをキャッシュしている / クリーンアップしていないようです。
これはバグですか、それともその動作を変更する構成パラメーターはありますか?