通过JProfiler快速分析定位线上OOM问题
·
1、模拟oom发生代码

2、启动项目时指定参数
-XX:+HeapDumpOnOutOfMemoryError -Xmx1000M -Xms1000M
参数解释
- -XX:+HeapDumpOnOutOfMemoryError:当程序出现OOM的时候就会在当前工程目录生成一个dump文件
- -Xms 为JVM启动时申请的初始Heap值,默认为操作系统物理内存的1/64但小于1G。默认当空余堆内存大于70%时,JVM会减小heap的大小到-Xms指定的大小,可通过-XX:MaxHeapFreeRation来指定这个比列。
- -Xmx 为JVM运行时可申请的最大Heap值,默认值为物理内存的1/4但小于1G,默认当空余堆内存小于40%时,JVM会增大Heap到-Xmx指定的大小,可通过-XX:MinHeapFreeRation来指定这个比列。
3、启动项目,调用该接口
不久后就会抛出异常:


当前目录会生成一个快照文件:

4、使用JProfiler打开快照文件

4.1、工具栏翻译

4.2、点击最大对象并选定
- 英文

- 中文

4.3、选择查看传入引用

可以看到调用树:

查看更多信息:

4.4、查看线程信息

更多推荐
所有评论(0)