Java heap dump触发和分析
来源:互联网 发布:男人喜欢女人 知乎 编辑:程序博客网 时间:2024/06/05 18:44
为了分析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 详解
- Java heap dump触发和分析
- Java heap dump触发和分析(转)
- Java heap dump触发和分析(转)
- Java heap dump触发和分析
- java的heap dump触发和分析[转]
- 触发 Java heap dump
- java程序性能分析之thread dump和heap dump
- java程序性能分析用到的文件thread dump和heap dump入门
- 利用JMAP+MAT分析Java Heap Dump
- 利用Java heap dump查找、分析问题
- 使用工具分析java heap dump文件
- 利用JMAP+MAT分析Java Heap Dump
- 利用Java heap dump查找、分析问题
- eclipse memory analyer分析thread dump和heap dump
- 认识Java Core和Heap Dump
- Java Heap Dump
- 分析 Java heap dump工具之IBM HeapAnalyzer
- Java Heap dump文件分析工具jhat简介
- linux下安装redis总结
- 基于 maven 的 ssm 项目搭建一:环境配置
- Hibernate使用注解方式完成双向多对多映射
- 大牛的未必必看,增长见识和知识啊
- Lintcode72 Construct Binary Tree from Inorder and Postorder Traversal solution 题解
- Java heap dump触发和分析
- linux下安装jdk1.8
- JNI开发
- 调用存储过程,函数,selectKey,sql,if,choose标签
- colorAccent,colorPrimary,colorPrimaryDark等
- 禅道——环境搭建
- bootp dhclient NetworkManager dbus dnsmasq resolvconf avahi关系厘清(持续更新)
- 线程的join 和detach状态(线程的分离与结合)
- Java中的经典算法之冒泡排序(Bubble Sort)