zoukankan      html  css  js  c++  java
  • JVM内存溢出的定位与分析

    一、初步认识

    二、模拟内存溢出
      2.1 ~ 编写测试类:TestJvmOutOfMemory。
    编写代码,向List集合中添加100万个字符串,每个字符串由1000个UUID组成。
    如果程序能够正常执行,最后打印ok。

    package cn.itcast.jvm;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.UUID;
    
    public class TestJvmOutOfMemory {
    
        public static void main(String[] args) {
            List<Object> list = new ArrayList<>();
            for (int i = 0; i < 10000000; i++) {
                String str = "";
                for (int j = 0; j < 1000; j++) {
                    str += UUID.randomUUID().toString();
                }
                list.add(str);
            }
            System.out.println("ok");
        }
        
    }

      2.2 ~ 在 VM potions中设置参数。

     

    -Xms8m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
     

    三、运行测试

    四、导入到MAT工具中进行分析
      4.1 ~ 看图观察。
      

    分析:
    …
    可以看到,有91.03%的内存由Object[]数组占有,所以比较可疑。
    …
    分析:这个可疑是正确的,因为已经有超过90%的内存都被它占有,这是非常有可能出现内存溢出的。

      4.2 ~ 查看详情。

     

    至此,实战:内存溢出的定位与分析完成。

    原文链接:https://blog.csdn.net/weixin_42464054/article/details/90938451

  • 相关阅读:
    终端提示符路径长度设置
    linux ssh服务器
    kail-linux my need
    elasticsearch的marvel
    VPS折腾
    Ubuntu 系统密码相关问题
    Pycharm 使用配置
    python集成开发工具
    Codeforces Round #554 (Div. 2) 选做
    Codeforces Forethought Future Cup Elimination Round 选做
  • 原文地址:https://www.cnblogs.com/yangzhixue/p/11988596.html
Copyright © 2011-2022 走看看