如何解决播放2.6,GoogleCache删除了缓存,但JVM内存并未减少
我正在使用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 举报,一经查实,本站将立刻删除。