我们正在使用当前配置如下的缓存:
private final Cache<K, V> storage = CacheBuilder.<K, V>newBuilder()
.maximumSize(100)
.removalListener(new RemovalListener<K, V>() { ... })
.build();
当我们插入一个节点时,我们也会触及它的所有祖先,这样一个节点的“最后使用”值总是比它在缓存中的子节点更新。
但是我们发现,当孩子还在缓存中时,它仍然会以某种方式驱逐父母。这对我们来说是个问题,因为子级维护对父级的引用并RemovalListener
关闭父级,这会关闭继续使用其后代所需的文件句柄。
有没有适当的方法来保持这种依赖?
如果没有,我可以输入的最大大小是否至少有一些值,以确保它不会过早驱逐条目?我们超过了 100 的最大尺寸,并且它驱逐的一些项目是最近使用的前 10 个项目。