gpt4 book ai didi

java - 如何在旧版 Java 应用程序上使用 com.opensymphony.oscache 查找内存泄漏

转载 作者:行者123 更新时间:2023-11-30 06:50:28 25 4
gpt4 key购买 nike

我有一个旧的 Java 应用程序,每周有几次变得非常慢,我必须重新启动 Tomcat。

我检查了 New Relic 的热门事务和错误日志,但找不到问题的根源,看来热门事务更多的是结果而不是问题的根源。

所以,我认为这可能是内存泄漏,我进行了堆转储并尝试在 Eclipse 内存分析器上对其进行分析,但我在识别内存泄漏以及是否确实是内存泄漏方面遇到了困难。

看来问题1是com.opensymphony.oscache.web.ServletCache。

以下是内存分析器的一些结果:

Summary

Histogram

Problem Suspect 1

此外,这是 VisualVM 监视器:

VisualVM Monitor

谢谢!任何有关这方面的帮助或指导都会非常有帮助!

这是oscache.properties文件:

cache.memory=true
cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.HashDiskPersistenceListener
cache.path=/home/oscache/tb

最佳答案

我建议采取一些措施来解决这个问题。

如果您的用例允许您执行以下操作,请使用磁盘缓存而不是内存缓存:

在oscache的配置文件中

cache.memory=false
cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener
cache.path=/opt/myapp/cache
cache.capacity=1000

如果不建议使用磁盘缓存尝试减少缓存容量

cache.capacity=1000

如果可能,请提供 oscache 的配置详细信息,以便更好地审查。

更新

当属性 cahce.memory=false 时使用 HashDiskPersistenceListener

我们有两种选择可供尝试

1) 提供缓存容量的值

cache.capacity=1000 #or a value that covers the usecase

2)使缓存使用磁盘持久化

cache.memory=false

关于java - 如何在旧版 Java 应用程序上使用 com.opensymphony.oscache 查找内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42908953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com