文章主题
本文详细介绍如何使用jmap获取Agile PLM运行时的Java Heap Dump信息。
-XX:+HeapDumpOnOutOfMemoryError
强烈建议将-XX:+HeapDumpOnOutOfMemoryError 添加到jvm参数中,确保一旦内存溢出自动产生heap dump log。使用此参数,确保jdk使用的是 1.5.0_17以上版本
- Oracle Application Server
编辑OAS_HOME/opmn/conf/opmn.xml,添加红色部分
<process-type id="home" module-id="OC4J" status="enabled"> <module-data> <category id="start-parameters"> <data id="java-options" value="-server -XX:+HeapDumpOnOutOfMemoryError …"/> <data id="oc4j-options" value="-verbosity 10 -userThreads"/> <data id="java-bin" value="d:/jdk1.6.0_17/bin/java"/> </category>
Heap Dump会写到OAS\opmn\bin\java_pid<pid>.<date>.<time>.hprof文件中
- Oracle Weblogic Server
修改启动脚本,如startAgile.cmd等
“/u01/java6/bin/java" –server -XX:+HeapDumpOnOutOfMemoryError -XX:MaxPermsize=...
Heap Dump会写到/u01/java6/bin/java\bin\java_pid<pid>.<date>.<time>.hprof文件中
JMAP
jmap的使用确保服务器运行jdk1.6.0以上的版本,见上述绿色部分
jmap语法
jmap -dump:format=b,file=heapdump.out
比如
[root@zlinux bin]# ./jmap -dump:format=b,file=heapdump.out 29727
Attaching to process ID 29727, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 16.2-b04
Dumping heap to heapdump.out ...
Finding object size using Printezis bits and skipping over...
Heap dump file created
Heap Dump会写到指定的heapdump.out文件中