深入理解jvm jdk1,7(11)

旧时模样 提交于 2020-03-31 08:58:02

OutOfMemoryError异常:在java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能

Java堆溢出:
Java堆用于存储对象实例,只要不断的创建对象,并且保证GCRoots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量达到最大堆的容量限制后就会产生内存溢出异常。

 

public class Test {   /**    * -Xms20M -Xmx20M -XX:+HeapDumpOnOutOfMemoryError    *    * @param args    */   public static void main(String[] args) {      List<OOMObject> list = new ArrayList<>();      List<OOMObject1> list1 = new ArrayList<>();      int i = 0;      while (i<10) {         list1.add(new OOMObject1());         i++;      }      while (true) {         list.add(new OOMObject());      }   }   static class OOMObject {   }   static class OOMObject1 {   }}

-Xms20M:堆的最小空间   -Xmx20M:堆的最大空间    -Xms 和-Xmx 相等不可扩展-XX:+HeapDumpOnOutOfMemoryError:可以让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便是否分析。XX:HeapDumpPath:指定生成Dump文件路径,如果不知道 默认当前路径(项目的根目录)。运行结果:

内存映像分析: https://blog.csdn.net/jin_kwok/article/details/80326088

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!