1. 标记——删除
将不再使用的对象内存空间标记,等JVM内存满了,就将标记清除。
2. 复制
把内存空间划分为2个相等的区域,每次只使用一个区域。垃圾回收时,遍历当前使用区域,把正在使用的对象复制到另外一个区域。
3. 标记——整理
将不再使用的对象标记,将正在使用的对象复制并整理到一块,并将标记的内存删除。
年轻代GC:
对象存活时间段,回收比较频繁的区域,主要是Eden区域、FromSpace、ToSpace之间的copy。
老年代GC:
对象存活时间长,不经常回收的区域。
向老年代GC存放对象的几种情况:
1. 设置一个阈值,当某个对象在FromSpace与ToSpace 之间的copy次数超过阈值后,就将该对象放入老年代GC。
2. 若某个对象大小超过年轻代设置的所允许的对象大小后,就将该对象直接放入老年代存放。