1.计数器法
对象被引用一次,计数器+1,失去引用一次,计数器-1,如果计数器=0,则代表着可以被回收
这种情况是有个严重的缺点是:如果有两个对象都没有外部引用,但是它们两个却互相引用,那么是不能被回收的。
2.标记-清除法
通过根对象标记所有可达的对象,然后清除其他对象.
清除前:
清除后:
这种情况有个缺点:就是有内存碎片,不利于大对象存储.
3.标记压缩法
是标记清除法的变种.最终将被标记的对象挤压放在某块区域.最终是这样的.
4.复制法
一共有两个区域 A,B,但实际上只在其中一个区域存储.
假设在A存储,现在发生GC,然后把所有有效的对象放到B区,接着清空A区.再次发生GC的时候,把有效对象放到A区,清空B区,如此循环.