HeapHero可视化内存分析工具
HeapHero是一款简单的,易用的内存分析工具,无需登录在线生成分析报告。官网地址:
https://heaphero.io/heap-index.jsp#header
我们模拟一个内存溢出的操作,代码如下:
public class TestJvm { public static void main(String[] args) { String str="hello word"; for(int i=0;i<1000000;i++){ str+=str; } System.out.println(str); } }
配置虚拟机初始内存及最大内存5M,及heap dump文件输出路径。
-Xms5m -Xmx5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=E://temp.hprof
运行代码后,我们查看console输出:
.... java.lang.OutOfMemoryError: Java heap space Dumping heap to E://temp.hprof ... Heap dump file created [3985440 bytes in 0.062 secs] Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at com.uaf.activiti.action.TestJvm.main(TestJvm.java:14)
我们将文件上传到HeapHero进行分析(文件大的话最好压缩为zip格式):
分析完成后我们可以看到图形页面展示:
主要展示项有:堆统计,大对象,字符串重复,低效率对象,线程数,及优化建议等。
另外HeapHero很智能的给我们分析出内存溢出的原因,并进行了标注如下图:
通过HeapHero可以协助我们更快的定位到异常问题,从而提高我们的开发效率。