【问题标题】:Memory leak in tomcatTomcat中的内存泄漏
【发布时间】:2012-08-20 09:27:20
【问题描述】:

我的 Web 应用程序在 tomcat 服务器上运行,但一段时间后内存使用量开始增长,直到服务器出现故障。

这种情况只发生在现场,当我尝试在本地重现这种情况时没有发生。我尝试使用 JProfiler 进行远程分析,并在服务器关闭之前发现了很多字节 []。服务器在开始占用越来越多的内存后会停机 2-3 分钟,所以我看不到代码中使用 byte[] 的项目,因为 Heap walk 需要更多时间(网络应用程序真的很大)。

如有任何帮助或建议,我将不胜感激。

【问题讨论】:

  • -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="/tmp" 添加到您的java 参数中,等待转储并在JProfiler 中导入

标签: tomcat memory-leaks


【解决方案1】:

建议:在您的类中放置一些内存使用转储,其中包含 HashMap、Vector(或这些集合的非同步版本)的缓存存储字段通常保留引用。比我放一个加号网址,它会转储我的变量,比如:

Runtime.getRuntime().callMemoryFunctionForgotName():已用内存为 270mb... 例如。 - 在这里你应该看到 WHEN 增长,随着时间的推移,有一些动作,其中一个有泄漏。

  • 当您检测到带有 action9 的 link43 时会产生内存泄漏,这很容易:)
  • 只需添加一些 hashMap.count() 或 size()(也忘记了,哈哈)到 logg,然后你会看到 20 个集合中的哪一个在增加而不是减少。希望您可以访问实时服务器日志。

所以我会分两步完成。

【讨论】:

    猜你喜欢
    • 2014-12-25
    • 2015-12-27
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 2012-08-06
    • 2013-07-29
    • 2015-06-04
    • 2014-04-03
    相关资源
    最近更新 更多