首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMAP转储大小为4.5 GB。Eclipse MAT显示的总堆大小为415MB,我如何分析剩余的转储?

JMAP转储大小为4.5 GB。Eclipse MAT显示的总堆大小为415MB,我如何分析剩余的转储?
EN

Stack Overflow用户
提问于 2013-01-12 04:47:11
回答 1查看 972关注 0票数 4

我正在使用Tomcat 6运行一个web应用程序。我们使用的是开放式JDK 6。我们的服务器是AMD 64位Ubuntu 11.04服务器。

内存转储由此命令获取

代码语言:javascript
复制
jmap -dump:format=b,file=/home/demon/Desktop/mymemorydump.hprof 2762

内存转储为4.5 GB。当我们使用eclipse MAT对其进行分析时,强可达对象为80MB,不可达对象为335MB。如何分析转储的其余部分..

此外,此进程在我的服务器上占用的内存为4.5 GB。现在这个内存永远不会降到1 GB的正常水平。这个内存慢慢增加到8-9 GB,然后我们的tomcat停止响应(实际上没有内存不足错误)。

我的tomcat配置是

代码语言:javascript
复制
/usr/lib/jvm/java-6-openjdk/bin/java -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties -Djava.awt.headless=true -Xms1024m -Xmx6144m -XX:+UseConcMarkSweepGC -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed -classpath /usr/share/tomcat6/bin/bootstrap.jar -Dcatalina.base=/var/lib/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.io.tmpdir=/tmp/tomcat6-tmp org.apache.catalina.startup.Bootstrap start
EN

回答 1

Stack Overflow用户

发布于 2013-01-12 05:27:45

你可能有一个线程泄漏,创建了过多的线程,而这些线程永远不会终止。每个线程分配堆栈空间,上面没有显示出来。按Ctrl-\ (unix) (或windows中的Ctrl-Break )将转储每个线程的堆栈跟踪(您可能需要重定向tomcat的STDERR,以避免它滚动出您的终端)。如果你没有从终端启动tomcat,那么使用"kill -QUIT YourPID“而不是Ctrl-。

此外,jconsole (在jdk bin目录中)可以附加到您的可执行文件,直到它停止响应。它也许能够在事情失控之前向您显示线程(或堆)的泄漏。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14286374

复制
相关文章

相似问题

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