Guava CacheBuilder - 确保父对象在其子级中位于缓存中

时间:2013-08-02 07:35:46

标签: java caching guava

我们正在使用当前配置如下的缓存:

private final Cache<K, V> storage = CacheBuilder.<K, V>newBuilder()
    .maximumSize(100)
    .removalListener(new RemovalListener<K, V>() { ... })
    .build();

当我们插入一个节点时,我们也会触及它的所有祖先,这样节点的“上次使用”值总是比它在缓存中的子节点更新。

但我们发现,当孩子们还在缓存中时,它仍然会以某种方式驱逐父母。这对我们来说是一个问题,因为子节点维护对父节点的引用,RemovalListener关闭父节点,这将关闭继续使用其后代所需的文件句柄。

是否有正确的方法来保持这种依赖性?

如果没有,我可以放入的最大尺寸是否有一些值,以确保它不会过早地逐出条目?我们以最大尺寸通过100,其中一些被驱逐的物品列在最近使用的前10个项目中。

0 个答案:

没有答案