zoukankan      html  css  js  c++  java
  • OutOfMemoryError/OOM/内存溢出异常实例分析--堆内存溢出

    Java堆内存溢出

    只要不断创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,

    那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常,代码如下:

    import java.util.ArrayList;
    import java.util.List;
    
    public class HeapOOM {
    
        static class OOMObject {
    
        }
    
        public static void main(String[] args) {
            List<OOMObject> list = new ArrayList<>();
            while (true) {
                list.add(new OOMObject());
            }
        }
    
    }

    在运行的时候,需要设置一下Java堆的大小,并且不可扩展,操作如下:

    然后填写JVM启动参数:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError

    限制Java堆大小20m,最大值和最小值一致就达到不可扩展的目的了,-XX:+HeapDumpOnOutOfMemoryError参数可以让虚拟机在出现

    内存溢出异常时Dump出当前的内存转储快照以便事后分析。(感兴趣的可以使用内存映像分析工具Eclipse Memory Analyzer打开堆转储快照文件进行分析)

    运行结果如下:

  • 相关阅读:
    Python 函数
    jQuery的选择器中的通配符
    Spring thymeleaf
    Mybatis 映射关系
    Spring Security学习笔记
    Python中的魔术方法
    Python enumerate
    python lambda表达式
    Vue自定义指令完成按钮级别的权限判断
    elemetUI开关状态误操作
  • 原文地址:https://www.cnblogs.com/java-spring/p/9851597.html
Copyright © 2011-2022 走看看