堆内存介绍
在《Java虚拟机(一)——Java内存区域划分》一文中介绍了Java 虚拟机 内存划分的内容,其中讲到堆内存(Heap)。对于大多数应用来说,Java堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。此内存区域的唯一目的就是存在对象实例,几乎所有的对象实例都在这里分配内存。这个区域也是Java 垃圾收集器管理的主要区域,因此很多时候也被称为”GC堆”。所以堆内存非常重要,我们有必要去了解它的细节,这对我们深入了解Java 垃圾回收机制非常有帮助。
堆内存划分
在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。
这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。
堆的内存模型大致如下图所示:
从图中可以看出: 堆大小 = 新生代 + 老年代。
默认情况下,
新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2
Eden : fro