zoukankan      html  css  js  c++  java
  • 使用JProfiler 分析 OOM

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/15022708.html

    模拟

    先模拟一个OOM的类

     1 package org.fool.test;
     2 
     3 import java.util.LinkedList;
     4 import java.util.List;
     5 
     6 public class TestOOM {
     7     public static class OOMObject {
     8         byte[] b = new byte[1024];
     9     }
    10 
    11     /**
    12      * -Xms20M -Xmx20M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp
    13      */
    14     public static void main(String[] args) {
    15         List<OOMObject> list = new LinkedList<>();
    16         while (true) {
    17             list.add(new OOMObject());
    18         }
    19     }
    20 }

    测试

    启动测试前需要配置VM Options

    -Xms20M -Xmx20M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp

    运行测试

    分析 

    使用JProfiler 打开tmp 目录下的 java_pid52952.hprof 文件

    Note:JProfiler 是商业软件,使用需要购买 license

    双击TestOOM$OOMObject

    在References 选择Incoming references

    随机选择一个,点击右上方的 Show Paths To GC Root,定位到问题出现在代码的17行


    欢迎点赞关注和收藏

    强者自救 圣者渡人
  • 相关阅读:
    Java 线程池学习
    Java线程:新特征-线程池
    创建Java线程池
    JAVA-线程安全性
    java线程安全总结
    栈和队列
    历年题目
    蓝桥杯算法训练
    hdu2083 暴力水
    poj 2299
  • 原文地址:https://www.cnblogs.com/agilestyle/p/15022708.html
Copyright © 2011-2022 走看看