如何产生 java heap dump

如何产生 java heap dump,第1张

JavaCore/HeapDump这两个文件可以雹指用手工的方式生成,当我们会遇到系统变慢或无迟肆碧响应的情况,这时就以采用手工的方式生成JavaCore及HeapDump文件。

在Unix/Linux上,产生这两个文件的方法如码举下:

# ps -ef | grep java

user 4616 4582 0 17:30 pts/0 00:00:00 grep java

root 5580 1 0 Oct27 ? 00:02:27 /usr/bin/java -server -XX:PermSize=64M -XX:MaxPermSize=128m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/local/tomcat8090/conf/logging.properties -Djava.endorsed.dirs=/usr/local/tomcat8090/endorsed -classpath:/usr/local/tomcat8090/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat8090 -Dcatalina.home=/usr/local/tomcat8090 -Djava.io.tmpdir=/usr/local/tomcat8090/temp org.apache.catalina.startup.Bootstrap start

# kill -3 5580

首先,找出Java进程id ,然后再执行‘kill -3 进程号’的 *** 作,等文件生成后再做一次同样的 *** 作,再产生一组文件。

详情请参考:http://blog.csdn.net/newhappy2008/article/details/7592697

java dump heap 是分配给实例类和数组对象运行数据区,所有java线程在运行期间共享heap中的数据。Java heap dump相当于java应用在运行的时候在某个时间点上打了个快照(snapshot)。

有java dump文件生成的方式如下:

1.使用$JAVA_HOME/bin/jmap -dump来触发,eg:jmap -dump:format=b,file=/home/longhao/heamdump.out

2.使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic> *** 作槐键>dumpHeap中,点击 dumpHeap按钮。生成的dump文件在java应用的根目录下面。

3.在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError,当应用毁蚂抛出OutOfMemoryError时生成dump文铅余巧件。

4.使用hprof。启动虚拟机加入-Xrunhprof:head=site,会生成java.hprof.txt文件。该配置会导致jvm运行非常的慢,不适合生产环境。

1. windows &Linux:

修改运行脚本的javaw 到java,并且添加参数-XX:+HeapDumpOnCtrlBreak。如兆

运芹基行程序后,按ctrl+break, 就可以得到heapdump文件。

-Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=c:\heapdump

2. solaris:

首先在运行的脚本中添加参数-XX:+HeapDumpOnCtrlBreak。

利用ps -ef | grep java 找到运行程序的进程号。

输入命令kill -3 <pid>,就可以得到heapdump文件。

或者: kill -QUIT <pid>

-Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError

3. AIX

(1) choose one cluster member, set the following before this server start:

在was启动前设置下面环境变量(可以加在启动脚本中)

export IBM_HEAPDUMP=true

export IBM_HEAP_DUMP=true

export IBM_HEAPDUMP_OUTOFMEMORY=true

export IBM_HEAPDUMPDIR=<directory path>

export IBM_JAVADUMP_OUTOFMEMORY=true

(2)please use set command to make sure you do not have DISABLE_JAVADUMP parameter

then start this cluster member.

用set命令检查参数设置,确保没有设置DISABLE_JAVADUMP,然后启动server

(3)when you find free memory <50% when no heavy access, please run kill -3 <pid>

执行kill -3 <pid>命令可以生成javacore文件和heapdump文渣首租件(pid为was java进程的id号,可以用ps -ef|grep java 查到),可以多执行几次,按照下面 *** 作进行


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12298396.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存