03_垃圾回收

Posted HigginCui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03_垃圾回收相关的知识,希望对你有一定的参考价值。

【简述】

垃圾回收GC(Garbage Collection),GC中的垃圾,特指存于内存中不会再使用的对象,回收相当于清除垃圾。

垃圾回收有很多种算法,如:引用计数法、标记压缩法、复制算法、分代分区思想。

[ 引用计数法 ]

是比较古老经典的垃圾收集算法,其核心就是对象在被其引用时计数器+1,而当引用失效时-1,这种方式有一个非常严重的问题:无法处理循环引用的情况,且每次进行操作比较浪费系统性能。

[ 标记清除法 ]

分为标记和清除两个阶段来处理内存中的对象。这种方式也有一个弊端:空间碎片问题,垃圾回收后的空间不是连续的,不连续的内存空间的工作效率要低于连续的内存空间。

[ 复制算法 ]

其核心思想就是将内存空间分为两块,每次只使用其中一块,在垃圾回收时,将正在使用的内存中的存留对象复制到未被使用的内存块中,之后去清除之前正在使用的内存块中的所有对象,反复去交换这两个内存的角色,完成垃圾收集。

Java中新生代的from和to区就是使用这个算法。

[ 标记压缩法 ]

标记压缩法对标记清除法基础上做了优化,把存活的对象压缩到内存一段,然后进行垃圾清除。

Java中老年代使用的就是标记压缩法。

 

以上是关于03_垃圾回收的主要内容,如果未能解决你的问题,请参考以下文章

js基础_垃圾回收

17_3_垃圾回收器_日志分析和垃圾回收器的发展

17_1_垃圾回收器_GC分类与性能指标概述SerialParNewParallelCMS面试

Java千百问_07JVM架构(011)_java垃圾回收都有哪些方式

python-垃圾回收机制

垃圾回收机制