问题描述
我正在尝试设置我正在处理的服务器的JVM,因此当OOME发生时它会将堆转储到文件中。
I am trying to set the JVM of the server I am working on, so it dumps a heap to file when an OOME occurs.
我知道我必须将此选项 -XX:-HeapDumpOnOutOfMemoryError
添加到某处的JVM参数中,但我无法知道如何执行此操作。
I know I have to add this option -XX:-HeapDumpOnOutOfMemoryError
to the JVM arguments somewhere, but I can't figure how to do this.
仅供参考,我可以通过PuTTY访问服务器,所以我正在寻找一种命令行方式。
FYI, I can access the server through PuTTY, so I am looking for a command line way of doing this.
我使用的JVM是OpenJDK64-Bit服务器虚拟机。
The JVM I am using is OpenJDK64-Bit Server VM.
我不知道这是否相关,但该应用程序是一个war文件。
I don't know if that's relevant, but the application is a war file.
PS : ps -ef|grep java
tomcat 23837 1 0 Mar25 ? 00:03:46 /usr/lib/jvm/jre/bin/java -classpath :/usr/share/tomcat6/bin/bootstrap.jar:/usr/share/tomcat6/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat6/temp -Djava.util.logging.config.file=/usr/share/tomcat6/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start
编辑:
I找到了一些东西,如果我错了就纠正我:因为我使用Tomcat,我决定在tomcat.conf文件中添加这些行:
I found something, correct me if I'm wrong : since I am using Tomcat, I decided to add these lines in the tomcat.conf file:
JAVA_OPTS = -XX: -HeapDumpOnOutOfMemoryError
JAVA_OPTS=-XX:-HeapDumpOnOutOfMemoryError
JAVA_OPTS = -XX:HeapDumpPath = / root / dump
JAVA_OPTS=-XX:HeapDumpPath=/root/dump
JAVA_OPTS = -Xmx20m
JAVA_OPTS=-Xmx20m
你怎么看?
推荐答案
来自HotSpot VM的这个选项。我认为它在OpenJDK VM中是相同的,但如果不是,请告诉我。
This option from the HotSpot VM options. I would think it'd be the same in the OpenJDK VM but let me know if it's not.
-XX:+ HeapDumpOnOutOfMemoryError -XX: HeapDumpPath =<转储文件的路径>
您还可以使用如果您知道进程ID:
You can also manually generate a memory map using jmap if you know the process id:
jmap -J-d64 -dump:format = b,file =<转储文件的路径> < jvm pid>
您可以使用来分析转储。
You can use JHat to analyze the dump.
jhat<转储文件的路径> ;
这篇关于在抛出OutOfMemoryError时,将JVM设置为转储堆的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!