分代收集理论
-
当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(Generational Collection)的理论进行设计,分代收集名为理论,实质是一套符合大多数程序运行实际情况的经验法则。因为对象不是孤立的,对象之间会存在跨代引用,3)是针对跨代引用提出的经验法则。 1)弱分代假说(Weak Generational Hypothesis):绝大多数对象都是朝生夕灭的。 2)强分代假说(Strong Generational Hypothesis):熬过越多次垃圾收集过程的对象就越难以消亡 3)跨代引用假说(Intergenerational Reference Hypothesis):跨代引用相对于同代引用来说仅占极 少数 -
把分代收集理论具体放到现在的商用Java虚拟机里,设计者一般至少会把Java堆划分为新生代 (Young Generation)和老年代(Old Generation)两个区域,即容易消亡的放在一起,不容易消亡的放在一起。这就同时兼顾了垃圾收集的时间开销和内存的空间有效利用。
堆结构
下图是HotSpot VM 的堆空间内存划分。Eden也称为新生代。
虚拟机内存
查看虚拟机能申请到的总内存和初始化的内存。 可以通过参数调整虚拟机的分配内存的大小 下图为GC时堆内存的信息。新生代和老年代的空间之和正好为虚拟机分配内存的空间大小。 元空间并不占用堆的实际内存。它是在本地存储。
|