gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:25:45 25 4
gpt4 key购买 nike

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

此命令获取内存转储

jmap -dump:format=b,file=/home/demon/Desktop/mymemorydump.hprof 2762

内存转储为 4.5 GB。当我们使用 eclipse MAT 对其进行分析时,Strong Reachable objects 为 80 MB,Unreachable objects 为 335 MB..如何分析剩余的转储..

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

我的tomcat配置是

/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

最佳答案

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

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

关于java - JMAP 转储大小为 4.5 GB。 Eclipse MAT 显示总堆为 415 MB,我如何分析剩余的转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com