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可以协助我们更快的定位到异常问题,从而提高我们的开发效率。