-
对象优先在新生代的Eden区(8的那个)分配
当Eden区没有足够空间时,会进行一次Minor GC
-
(1) Minor GC
发生在新生代的GC,比较频繁,回收速度也比较快
(2) Full GC
发生在新生代和老年代的GC,回收频率低,回收一次比较慢(Minor GC的10倍以上)
-
大对象直接进入老年代
否则,它们如果进入新生代,使用了复制算法的时候,复制大对象一次的消耗太大
-
长期存活的对象进入老年代
如果一些对象,本来是在新生代,历经多次Minor GC而没有被回收,那么它们每次被回收时age++,当age超过阈值时就进入老年代
-
空间分配担保
如果不采用冒险策略,那么在发生Minor GC之前,JVM会检查一下老年代的__最大连续可用空间__是否大于新生代所有对象总空间:
如果大于,说明新生代的复制回收算法无风险;
如果小于,那就先进行一次Full GC,清理一下老年代,然后再Minor GC;
如果采取冒险策略,那么不管老年代空间够不够,都进行新生代的Minor GC,赌一把试试
chapter03_垃圾收集器与内存分配策略_6_内存分配与回收策略
最新推荐文章于 2024-08-05 00:10:02 发布