• 深入理解jvm jdk1,7(11)


    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

  • 相关阅读:
    SVN 撤回(回滚)提交的代码
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    阅读笔记
    Android随笔
    Android随笔
    Android随笔
    Android随笔
  • 原文地址:https://www.cnblogs.com/myDreamWillCometrue/p/10871557.html
Copyright © 2020-2023  润新知