IBM JDK生成Dump文件的方法

[url]https://www.cnblogs.com/wyb628/p/8567610.html[/url] (分析工具使用说明)
[url]https://blog.csdn.net/namesliu/article/details/7018086[/url] (JavaDump文件说明)
[url]https://www.oschina.net/question/129540_23220[/url] (生成javadump、heapdump、systemdump文件的方法)
[url]http://www.codeweblog.com/websphere-was-generated-javacore/[/url]
[url]https://www-01.ibm.com/support/docview.wss?uid=swg21384926[/url] (was下生成heapdump文件的方法)
[url]http://wpcertification.blogspot.com/2009/07/manually-generating-heap-dump.html[/url] (was下生成heapdump文件的方法[写成脚本了])
[url]https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.api.80.doc/com.ibm.jvm.ras/index.html[/url]
[url]https://docs.oracle.com/javase/8/docs/jdk/api/attach/spec/index.html[/url] (VirtualMachine API说明, 这个VirtualMachine类只在1.6以上的版本才有)
[url]https://www.cnblogs.com/pengineer/p/5086428.html[/url] (Hotspot JVM的常用选项)
[url]https://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html[/url] (com.sun.management.HotSpotDiagnosticMXBean的API文档)
[url]https://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/package-summary.html[/url] (com.sun.management这个包的API[包括所有类])
com.sun.managementOperatingSystemMXBean可以获取操作系统信息


操作系统的转储文件可用于IBM和HotSpot JVM。对于IBM JVM,您可以使用jextract工具(JDK 自带)来创建转储文件,并
将它们直接加载到Memory Analyzer中;对于HotSpot JVM,您可以使用jmap工具从内核转储文件中提取堆Dump。
(我们将在文章后面内容中讨论这两种技术。)然而,在一些操作系统上,您必须保证这个进程在创建内核转储文件之前
具有足够的[color=red]ulimit[/color]。如果[color=red]ulimit[/color]不正确,那么您必须修改它们,并重新启动这个进程,才能够收集一个转储文件。


[color=blue]ibm jdk manual generate heapdump[/color]

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)

【[color=orange]注[/color]】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的内容,但需要关注。

你可能感兴趣的:(jdk)