IBM JDK生成Dump文件的方法 博客分类: jdk jdk
程序员文章站
2024-03-01 22:56:10
...
https://www.cnblogs.com/wyb628/p/8567610.html (分析工具使用说明)
https://blog.csdn.net/namesliu/article/details/7018086 (JavaDump文件说明)
https://www.oschina.net/question/129540_23220 (生成javadump、heapdump、systemdump文件的方法)
http://www.codeweblog.com/websphere-was-generated-javacore/
https://www-01.ibm.com/support/docview.wss?uid=swg21384926 (was下生成heapdump文件的方法)
http://wpcertification.blogspot.com/2009/07/manually-generating-heap-dump.html (was下生成heapdump文件的方法[写成脚本了])
https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.api.80.doc/com.ibm.jvm.ras/index.html
https://docs.oracle.com/javase/8/docs/jdk/api/attach/spec/index.html (VirtualMachine API说明, 这个VirtualMachine类只在1.6以上的版本才有)
https://www.cnblogs.com/pengineer/p/5086428.html (Hotspot JVM的常用选项)
https://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html (com.sun.management.HotSpotDiagnosticMXBean的API文档)
https://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/package-summary.html (com.sun.management这个包的API[包括所有类])
com.sun.managementOperatingSystemMXBean可以获取操作系统信息
操作系统的转储文件可用于IBM和HotSpot JVM。对于IBM JVM,您可以使用jextract工具(JDK 自带)来创建转储文件,并
将它们直接加载到Memory Analyzer中;对于HotSpot JVM,您可以使用jmap工具从内核转储文件中提取堆Dump。
(我们将在文章后面内容中讨论这两种技术。)然而,在一些操作系统上,您必须保证这个进程在创建内核转储文件之前
具有足够的ulimit。如果ulimit不正确,那么您必须修改它们,并重新启动这个进程,才能够收集一个转储文件。
ibm jdk manual generate heapdump
static com.ibm.jvm.Dump.JavaDump()
static com.ibm.jvm.Dump.HeapDump()
static com.ibm.jvm.Dump.SystemDump()
static com.ibm.jvm.Dump.javaDumpToFile()
static com.ibm.jvm.Dump.heapDumpToFile()
static com.ibm.jvm.Dump.systemDumpToFile()
static com.ibm.jvm.Dump.javaDumpToFile(java.lang.String fileNamePattern)
static com.ibm.jvm.Dump.heapDumpToFile(java.lang.String fileNamePattern)
static com.ibm.jvm.Dump.systemDumpToFile(java.lang.String fileNamePattern)
static com.ibm.jvm.Dump.triggerDump(java.lang.String dumpOptions)
【注】static类型的方法不用初始化,在类里直接写com.ibm.jvm.Dump.HeapDump()就可以被执行,在需要生成HeapDump文件的时候手动触发。这个com.ibm.jvm.Dump.HeapDump()接口要借助Java Attach API来执行,因为这个接口没有类似pid这样的参数,Java Attach API中VirtualMachine类有attach()方法,这个attach可以接收pid参数,然后再调用VirtualMachine类的loadAgent方法把你自己写的jar加载到jvm里并运行,你自己写的类必须是main方法的类。
类似set PRE_CLASSPATH=%DOMAIN_HOME%/lib/antlr-2.7.6.jar
java -cp %DOMAIN_HOME%/lib/mydump.jar com.shihuan.dump.genete.MyHeapDump
AIX: gencore 这个命令必须有dbx组件支持。
Linux: gcore 这个命令必须有gdb组件支持。
上面的命令跟kill -6 pid是一样的作用,但kill -6 pid是系统级别的信号,不需要组件支持。
tcpdump不是IBM JDK的内容,但需要关注。
https://blog.csdn.net/namesliu/article/details/7018086 (JavaDump文件说明)
https://www.oschina.net/question/129540_23220 (生成javadump、heapdump、systemdump文件的方法)
http://www.codeweblog.com/websphere-was-generated-javacore/
https://www-01.ibm.com/support/docview.wss?uid=swg21384926 (was下生成heapdump文件的方法)
http://wpcertification.blogspot.com/2009/07/manually-generating-heap-dump.html (was下生成heapdump文件的方法[写成脚本了])
https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.api.80.doc/com.ibm.jvm.ras/index.html
https://docs.oracle.com/javase/8/docs/jdk/api/attach/spec/index.html (VirtualMachine API说明, 这个VirtualMachine类只在1.6以上的版本才有)
https://www.cnblogs.com/pengineer/p/5086428.html (Hotspot JVM的常用选项)
https://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html (com.sun.management.HotSpotDiagnosticMXBean的API文档)
https://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/package-summary.html (com.sun.management这个包的API[包括所有类])
com.sun.managementOperatingSystemMXBean可以获取操作系统信息
操作系统的转储文件可用于IBM和HotSpot JVM。对于IBM JVM,您可以使用jextract工具(JDK 自带)来创建转储文件,并
将它们直接加载到Memory Analyzer中;对于HotSpot JVM,您可以使用jmap工具从内核转储文件中提取堆Dump。
(我们将在文章后面内容中讨论这两种技术。)然而,在一些操作系统上,您必须保证这个进程在创建内核转储文件之前
具有足够的ulimit。如果ulimit不正确,那么您必须修改它们,并重新启动这个进程,才能够收集一个转储文件。
ibm jdk manual generate heapdump
static com.ibm.jvm.Dump.JavaDump()
static com.ibm.jvm.Dump.HeapDump()
static com.ibm.jvm.Dump.SystemDump()
static com.ibm.jvm.Dump.javaDumpToFile()
static com.ibm.jvm.Dump.heapDumpToFile()
static com.ibm.jvm.Dump.systemDumpToFile()
static com.ibm.jvm.Dump.javaDumpToFile(java.lang.String fileNamePattern)
static com.ibm.jvm.Dump.heapDumpToFile(java.lang.String fileNamePattern)
static com.ibm.jvm.Dump.systemDumpToFile(java.lang.String fileNamePattern)
static com.ibm.jvm.Dump.triggerDump(java.lang.String dumpOptions)
【注】static类型的方法不用初始化,在类里直接写com.ibm.jvm.Dump.HeapDump()就可以被执行,在需要生成HeapDump文件的时候手动触发。这个com.ibm.jvm.Dump.HeapDump()接口要借助Java Attach API来执行,因为这个接口没有类似pid这样的参数,Java Attach API中VirtualMachine类有attach()方法,这个attach可以接收pid参数,然后再调用VirtualMachine类的loadAgent方法把你自己写的jar加载到jvm里并运行,你自己写的类必须是main方法的类。
类似set PRE_CLASSPATH=%DOMAIN_HOME%/lib/antlr-2.7.6.jar
java -cp %DOMAIN_HOME%/lib/mydump.jar com.shihuan.dump.genete.MyHeapDump
AIX: gencore 这个命令必须有dbx组件支持。
Linux: gcore 这个命令必须有gdb组件支持。
上面的命令跟kill -6 pid是一样的作用,但kill -6 pid是系统级别的信号,不需要组件支持。
tcpdump不是IBM JDK的内容,但需要关注。