1.标记-清除(Mark-Sweep)
首先标记所有被引用对象,之后遍历整个堆清除未标记的。
会产生内存碎片。
2.复制(Copying)
遍历把被引用对象复制到另一个区域。
不会出现碎片,但是会出现两倍内存空间爱你。
3.标记-整理(Mark-Compact)
首先标记所有被引用对象,之后清除未标记对象并且把存货对象移动到堆的一块。
不会产生碎片,也节省了空间,但是牺牲了时间。
4.分代收集(Generational Collection)
新生代,大批对象死去少量存货,用复制。这样可以减少时间成本,还不会产生大量碎片。
老年代,对象存活率较高就是用标记整理。(有的文章说标记清理或整理,本人认为清理也会消耗部分内碎片,所以还是用标记整理较好)