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