清除
遍历堆中所有的对象把没有标记的对象全部清除....在程序运行期间,当堆中的可用内存被耗尽时,GC线程就会启动并停止程序,GC线程将存活的对象标记一遍,没有被标记的对象就是垃圾对象,最后这些垃圾对象会被清除掉,然后重新唤醒应用程序....标记清除的优点是算法简单,缺点如下:
1.效率低下,需要遍历整个堆.进行GC的时候需要停止应用程序
2.垃圾回收后的内存空间是不连续的,因为垃圾对象的分布很随意,那么清除后的内存会不连续....复制算法
复制算法使用了两块同等大小的内存空间,每次只用一块,垃圾回收的时候,把存活的对象直接另外一块内存,然后剩余的垃圾对象全部一次性清除.好处是复制存活对象的时候就不用考虑内存碎片.唯一的缺点就是内存利用率只有...当进行垃圾回收时,将存活对象一次性复制到一块Survivor空间,最后清除掉Eden和使用过的Survivor空间.