一、标准的SUN/Oracle JVM
当内存溢出时生成heapdump文件配置如下
-Xloggc:${目录}/temp_gc.log (GC日志文件)
-XX:+HeapDumpOnOutOfMemoryError (内存溢出时生成heapdump文件)
-XX:HeapDumpPath=${目录} (heapdump文件存放位置)
如果要即时动态生成heapdump文件可以使用jmap命令,jdk6.0已取消了-XX:+HeapDumpOnCtrlBreak配置参数通过ctrl+break的方式。
jmap -dump:format=b,file=temp_heapdump.hprof <pid>
二、HP JVM
-Xverbosegc:file=${目录}/temp_gc.log (GC日志文件)
-XX:+HeapDumpOnOutOfMemoryError (内存溢出时生成heapdump文件)
-XX:+HeapDumpOnCtrlBreak (可以通过ctrl+break组合键动态生成heapdump文件)
-XX:HeapDumpPath=${目录} (heapdump文件存放位置)
三、IBM JVM
非windows操作系统环境中
-XverboseGClog: ${目录}/temp_gc.log (GC日志文件)
-Xdump:heap:events=user,file=${目录}/pid%uid%pid.phd
表示可以根据需要通过kill -3 <pid>产生DUMP文件,%uid和%pid为变量
windows操作系统环境中
启动wsadmin,进入wsadmin环境
wsadmin>set jvm [$AdminControl completeObjectName type=JVM,process=server1,*] wsadmin> $AdminControl invoke $jvm generateHeapDump wsadmin> $AdminControl invoke $jvm dumpThreads