ParNew
Serial 与 Serial old 单线程的就先不分析学习了
到底什么时候会尝试触发Minor GC
一般年轻代内部内存比例是8:1:1
当Eden区满了会触发minor gc把活下来的对象放入剩余的s区中。
触发Minor GC之前会如何检查老年代大小,涉及哪几个步骤和条件
- 判断老年代剩余空间是否大于新生代所有对象内存空间。
- 如果HandlePromotionFailure 这个参数设置后会进入下一步判断,老年代剩余大小是否大于之前minor gc进入老年代的平均大小(担保)
- 如果上面判断失败了或者这个参数没设置,会直接进入full gc
- 如果参数设置了,条件成立后,会冒险尝试minor gc ,如果年轻代放得下就放年轻代,不然就放老年代,如果都放不下 就会执行full gc ,这次full gc 会连带新生代一起进行垃圾回收,如果还不行就OOM了。
什么时候在Minor GC之前就会提前触发一次Full GC?
当老年代剩余大小小于年轻代大小,并且没有设置HandlePromotionFailure时会触发full gc,如果设置了,老年代剩余大小小于年轻代以往GC大小。
Full GC的算法是什么
标记后清理 然后整理 内存块。
<