首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在遗留java应用程序中使用com.opensymphony.oscache查找内存泄漏

如何在遗留java应用程序中使用com.opensymphony.oscache查找内存泄漏
EN

Stack Overflow用户
提问于 2017-03-20 16:28:56
回答 2查看 865关注 0票数 1

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

我检查了New和错误日志,但是我找不到问题的根源,似乎顶级事务更多的是一个结果,而不是问题的根源。

因此,我想这可能是内存泄漏,我做了堆转储,并试图在Eclipse内存分析器上分析它,但是我在识别内存泄漏和是否真的是内存泄漏方面遇到了困难。

它接缝的问题嫌疑人1是com.opensymphony.oscache.web.ServletCache。

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

另外,这是VisualVM监视器:

谢谢!任何帮助或指导这将是非常有帮助的!

这是oscache.properties文件:

代码语言:javascript
复制
cache.memory=true
cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.HashDiskPersistenceListener
cache.path=/home/oscache/tb
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-28 12:50:43

我建议解决这个问题的几件事都没有。

如果用例允许您使用磁盘缓存而不是内存缓存,则可以:

的配置文件中

代码语言:javascript
复制
cache.memory=false
cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener
cache.path=/opt/myapp/cache
cache.capacity=1000

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

代码语言:javascript
复制
cache.capacity=1000

请提供示波器的配置细节,以便在可能的情况下进行更好的审查。

更新

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

我们有两种选择

1)提供缓存容量的值。

代码语言:javascript
复制
cache.capacity=1000 #or a value that covers the usecase

2)使高速缓存使用磁盘的持久性。

代码语言:javascript
复制
cache.memory=false
票数 1
EN

Stack Overflow用户

发布于 2017-03-29 09:09:54

我建议使用试用版的YourKit Java,它将为您提供更多关于遗留应用程序代码的详细信息。下面是链接:早在2014年,我就用这个工具作为一个试用版来检测基于struts 2和Hibernate的Web应用程序中的内存泄漏。

你的工具包

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

https://stackoverflow.com/questions/42908953

复制
相关文章

相似问题

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