首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何诊断Tomcat 7中的OutOfMemoryErrors?

如何诊断Tomcat 7中的OutOfMemoryErrors?
EN

Stack Overflow用户
提问于 2014-12-11 09:44:16
回答 3查看 107关注 0票数 1

我在一个Tomcat7实例中运行了几个应用程序。

偶尔,我注意到日志中有OutOfMemoryErrors。

如何找出哪个应用程序(理想情况下是哪个)类导致它们?

更新1 (25.12.2014 11:44 MSK):

我在应用程序中更改了一些内容(在servlet上下文被破坏时,添加了对Quartz调度程序的关闭调用),这可能导致内存泄漏。

现在,我的内存消耗图表如下所示。

它们中有任何一个表示应用程序中的内存泄漏吗?

如果是,是哪一个?

EN

回答 3

Stack Overflow用户

发布于 2014-12-11 09:48:48

关于那个http://www.oracle.com/technetwork/java/javase/clopts-139448.html有一个很好的文档

  • 使用上面链接中描述的vm参数创建堆转储。
  • 分析这个堆,例如使用memoryanalzyer(https://eclipse.org/mat/)。
票数 3
EN

Stack Overflow用户

发布于 2014-12-11 09:55:58

由于许多原因,OOM可能会发生。

1.)内存泄漏

2.)生成大量的局部变量等。

OOM是内存泄漏的常见指示。本质上,当没有足够的空间分配新对象时,会引发错误。

很少有异常消息

  1. java.lang.OutOfMemoryError: Java堆空间
  2. java.lang.OutOfMemoryError: PermGen空间
  3. java.lang.OutOfMemoryError:请求的数组大小超过VM限制
  4. java.lang.OutOfMemoryError:请求字节。交换空间之外?
  5. java.lang.OutOfMemoryError:(本机方法)

更详细的信息这里官场

参考

需要分析堆转储/线程转储等。

检测内存泄漏

票数 1
EN

Stack Overflow用户

发布于 2014-12-11 09:47:20

你可以使用jmap。它将给出java进程的快照。

内存中有多少对象具有对象的大小。

代码语言:javascript
运行
复制
jmap -histo #processID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27419686

复制
相关文章

相似问题

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