2

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

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

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

4

1 回答 1

0

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

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

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

所以我会分两步做。

于 2012-08-24T20:05:26.190 回答