问题描述
我正在使用com.google.common.cache。*
代码如下:
@Singleton
class CachingService @Inject()(loaderService: ValueLoaderService){
final val revisionCache = CacheBuilder
.newBuilder
.recordStats()
.removalListener(new RemovalListener[Key,Value]() {
override def onRemoval(notification: RemovalNotification[Key,Value]): Unit = {
logger.info(s"RemovalListener: going to remove key: ${notification.getKey},cause: ${notification.getCause}")
}
})
.maximumSize(maxCacheSize)
.expireAfteraccess(expireAfteraccess.toMillis,TimeUnit.MILLISECONDS)
.build(
new CacheLoader[Key,Value] {
override def load(key: Key): Value = {
logger.info(s"CacheLoader.load: $key")
Await.result(loaderService.getValue(key),downloadTimeout)
}
}
)
}
我看到缓存会根据日志删除条目,但是JVM内存完全没有变化。它只会增长。单个缓存值的大小约为1GB。许多领域对象以案例类的形式呈现,使用play.api.json从json反序列化。
我想还剩下一些参考资料,这就是为什么不进行GC引用的原因。我不知道是什么在Play应用中保存了对虚拟案例类的引用。
我如何调试它?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)