此处记录下对gc算法的理解
1.对于标记清除,分为2部分,先进行标记,然后进行清除,如下图所示:
对上图中的灰色部分进行垃圾回收,回收后的截图如下所示:
从图中可知,进行标记清理后,可以看出,清楚后的内存可用内存增加,但是清除垃圾后的内存地址不连接,出现垃圾碎片,当有大对象需要进行内存分配时,会因为找不到足够内存进行分配对象而造成垃圾回收,频繁的垃圾回收影响效率和性能
2.对上一个垃圾收集算法的改进,引出了复制算法
所谓复制算法,就是把内存分为2块等同大小的内存空间(A和B),使用A进行内存的使用,当A部分的内存不足以分配对象而引起内存回收时,就会把存活的对象从A内存块放到B内存块中,后把A内存块中的对象全部清除,在B内存块中使用,当B内存不足以分配内存时,就会把B中存活的对象放到A内