首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Guava Cache上的弱引用值未给出驱逐通知

Google Guava Cache上的弱引用值未给出驱逐通知
EN

Stack Overflow用户
提问于 2015-09-19 04:08:24
回答 2查看 1.5K关注 0票数 2

我在基于weakValues的应用程序中使用了google guava,如下所示。

代码语言:javascript
复制
CacheBuilder
            .newBuilder()
            .weakValues()
            .concurrencyLevel(Runtime.getRuntime().availableProcessors())
            .removalListener(removalListener)
            .build(cacheLoader);

删除缓存弱值后,不会立即调用删除侦听器。我必须基于此来清除本机资源,因此我的程序在本机结束时不会释放内存。这是一个已知的问题吗?

EN

回答 2

Stack Overflow用户

发布于 2015-09-19 05:20:41

Google Guava docs中,它显示以下内容:

使用CacheBuilder构建的

缓存不会“自动”执行清理和逐出值,也不会在值过期后立即执行任何操作。取而代之的是,它在写操作期间执行少量维护,或者在偶尔的读操作期间(如果很少写操作)。

还解释了他们为什么做出这一决定以及可用的替代方案。

票数 2
EN

Stack Overflow用户

发布于 2017-12-13 04:33:45

如果JVM声明了weakRef,我不认为监听程序会被调用。只有当逐出策略触发逐出时,该监听程序才能工作。例如expireAfterWriter()或expireAfterAccess()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32660230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档