我做了一些测试,似乎 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 个删除的节点。
这是一个错误还是有配置参数来改变这种行为?