我在一个Tomcat7实例中运行了几个应用程序。
偶尔,我注意到日志中有OutOfMemoryErrors。
如何找出哪个应用程序(理想情况下是哪个)类导致它们?
更新1 (25.12.2014 11:44 MSK):
我在应用程序中更改了一些内容(在servlet上下文被破坏时,添加了对Quartz调度程序的关闭调用),这可能导致内存泄漏。
现在,我的内存消耗图表如下所示。
它们中有任何一个表示应用程序中的内存泄漏吗?
如果是,是哪一个?
发布于 2014-12-11 09:48:48
关于那个http://www.oracle.com/technetwork/java/javase/clopts-139448.html有一个很好的文档
发布于 2014-12-11 09:55:58
由于许多原因,OOM可能会发生。
1.)内存泄漏
2.)生成大量的局部变量等。
OOM
是内存泄漏的常见指示。本质上,当没有足够的空间分配新对象时,会引发错误。
很少有异常消息
更详细的信息这里和官场
参考这和这
需要分析堆转储/线程转储等。
检测内存泄漏
发布于 2014-12-11 09:47:20
你可以使用jmap。它将给出java进程的快照。
内存中有多少对象具有对象的大小。
jmap -histo #processID
https://stackoverflow.com/questions/27419686
复制相似问题