我在Tomcat7实例中运行了几个应用程序。
有一段时间,我注意到日志中有OutOfMemoryErrors。
我怎样才能找出哪个应用程序(理想情况下 - 哪个)类导致它们?
更新1(25.12.2014 11:44 MSK):
我在应用程序中更改了某些内容(在销毁servlet上下文时添加了对Quartz调度程序的关闭调用),这可能导致内存泄漏。
现在我的记忆消耗图表如下所示。
它们中的任何一个是否表明应用程序中存在内存泄漏?
如果是,哪一个?
答案 0 :(得分:3)
有关于http://www.oracle.com/technetwork/java/javase/clopts-139448.html
的详细文档答案 1 :(得分:1)
OOM 可能因为很多原因而发生。
1。)内存泄漏
2。)生成大量局部变量等。
OOM
是内存泄漏的常见迹象。实质上,当没有足够的空间来分配新对象时,会抛出错误。
几乎没有异常消息
需要分析堆转储/线程转储等。
答案 2 :(得分:0)
您可以使用jmap。它将给出java进程的快照。
内存中有多少个对象大小的对象。
jmap -histo #processID