Java heap dump触发和分析
2017-06-13 10:19
447 查看
为了分析java应用的内存泄漏,使用thread dump往往解决不了问题。使用jstat【eg:jstat -gcutil
pid 1000 5】工具查看运行的java应用的heap size,perm size ,survivor ratio等,当时你无法知道是什么对象把堆填满了。
什么是 Java heap dump
首先需要搞懂什么是java heap,java heap是分配给实例类和数组对象运行数据区,所有java线程在运行期间共享heap中的数据。Java heap dump相当于java应用在运行的时候在某个时间点上打了个快照(snapshot)。
触发 Java heap dump
有以下方法出发heap dump
使用$JAVA_HOME/bin/jmap -dump来触发,eg:jmap
-dump:format=b,file=/home/longhao/heamdump.out
使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic>操作>dumpHeap中,点击
dumpHeap按钮。生成的dump文件在java应用的根目录下面。
在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError,当应用抛出OutOfMemoryError时生成dump文件。
使用hprof。启动虚拟机加入-Xrunhprof:head=site,会生成java.hprof.txt文件。该配置会导致jvm运行非常的慢,不适合生产环境。
分析 Java heap dump
1:使用IBM HeapAnalyzer
IBM HeapAnalyzer是一款免费的JVM内存堆的图形分析工具,它可以有效的列举堆的内存使用状况,帮助分析Java内存泄漏的原因。
下载解压后有一个ha413.jar,执行: java -Xmx512m -jar ha413.jar /home/longhao/heapdump.out
2:jhat
jhat(Java Head Analyse Tool )是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言OQL,分析相关的应用后,可以通过http://localhost:7000来访问分析结果。
示例: $JAVA_HOME/bin/jhat -J-Xmx512m /home/longhao/dump.out
3:Eclipse MemoryAnalyzer
Eclipse Memory Analyzer是一个快速并且功能强大的Java heap分析器,能够帮助你查找内存泄漏和减少内存消耗。在File>Acquire Heap Dump>configure>HPROF
jmap dump provider设置一下分析应用的JDK,点击相关应用列表来生成heap dump并分析。
在socket,nio中的有些API中,申请的内存是直接想OS要的,在堆中分析内存是查看不到的,可以通过-XX:MaxDirectMemorySize=来设置应用向OS直接申请的最大内存数。
jdk分析工具
Java程序员常用工具集
如何使用jconsole(英文)
jdk分析工具:jps和jstack
jdk分析工具:jmap和jhat
Java heap dump触发和分析
java命令行HPROF Profiler
JVM1.6 GC详解
JVM GC算法 CMS 详解
pid 1000 5】工具查看运行的java应用的heap size,perm size ,survivor ratio等,当时你无法知道是什么对象把堆填满了。
什么是 Java heap dump
首先需要搞懂什么是java heap,java heap是分配给实例类和数组对象运行数据区,所有java线程在运行期间共享heap中的数据。Java heap dump相当于java应用在运行的时候在某个时间点上打了个快照(snapshot)。
触发 Java heap dump
有以下方法出发heap dump
使用$JAVA_HOME/bin/jmap -dump来触发,eg:jmap
-dump:format=b,file=/home/longhao/heamdump.out
使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic>操作>dumpHeap中,点击
dumpHeap按钮。生成的dump文件在java应用的根目录下面。
在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError,当应用抛出OutOfMemoryError时生成dump文件。
使用hprof。启动虚拟机加入-Xrunhprof:head=site,会生成java.hprof.txt文件。该配置会导致jvm运行非常的慢,不适合生产环境。
分析 Java heap dump
1:使用IBM HeapAnalyzer
IBM HeapAnalyzer是一款免费的JVM内存堆的图形分析工具,它可以有效的列举堆的内存使用状况,帮助分析Java内存泄漏的原因。
下载解压后有一个ha413.jar,执行: java -Xmx512m -jar ha413.jar /home/longhao/heapdump.out
2:jhat
jhat(Java Head Analyse Tool )是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言OQL,分析相关的应用后,可以通过http://localhost:7000来访问分析结果。
示例: $JAVA_HOME/bin/jhat -J-Xmx512m /home/longhao/dump.out
3:Eclipse MemoryAnalyzer
Eclipse Memory Analyzer是一个快速并且功能强大的Java heap分析器,能够帮助你查找内存泄漏和减少内存消耗。在File>Acquire Heap Dump>configure>HPROF
jmap dump provider设置一下分析应用的JDK,点击相关应用列表来生成heap dump并分析。
在socket,nio中的有些API中,申请的内存是直接想OS要的,在堆中分析内存是查看不到的,可以通过-XX:MaxDirectMemorySize=来设置应用向OS直接申请的最大内存数。
jdk分析工具
Java程序员常用工具集
如何使用jconsole(英文)
jdk分析工具:jps和jstack
jdk分析工具:jmap和jhat
Java heap dump触发和分析
java命令行HPROF Profiler
JVM1.6 GC详解
JVM GC算法 CMS 详解
相关文章推荐
- Java heap dump触发和分析
- Java heap dump触发和分析
- Java heap dump触发和分析(转)
- java的heap dump触发和分析[转]
- Java heap dump触发和分析(转)
- Java heap dump触发和分析(转)
- 转载:javacore文件及heapdump文件分析
- 利用Java heap dump查找、分析问题
- Heapdump javacore文件分析工具
- Heapdump javacore文件分析工具
- Heapdump javacore文件分析工具
- 打开javacore和heapdump分析软件
- javacore文件及heapdump文件分析
- 利用Java heap dump查找、分析问题
- javacore文件及heapdump文件分析
- heapdump/javacore分析工具
- Heapdump javacore文件分析工具
- Heapdump javacore文件分析工具
- heapdump/javacore分析工具
- Java内存分析(2)分析Heap Dump