-
引用计数法
-
每一个对象都会为他创建一个计数器,记录他的次数,通过使用次数来判断是否需要垃圾回收,但是为每一个对象创建计数器是一种资源的消耗
-
-
复制算法
-
每次GC都会将伊甸园中存活的对象放到幸存区,而伊甸园和from被GC后会变成空的(GC时会把from里面的对象和伊甸园存活的对象复制到To,这时from变成空的,to区变成有两个对象,这时from和to名字就交换了,from变to,to变from,因为to一定是空的)
-
from和to是一直在变换的,to一定是空的
-
最佳的使用场景:对象存活率较低的时候,复制算法主要在新生区(伊甸园和幸存区)发挥作用
-
优点:没有内存碎片
-
缺点:浪费内存空间(多了一个幸存区,有一半的幸存区一直是空的,也就是to区)
-
-
标记清除法
-
先扫描对存活的对象进行标记,第二次扫描对没有标记的对象进行清除
-
优点:不需要额外的空间,也就是复制算法中的幸存区
-
缺点:两次扫描严重浪费时间,会产生内存碎片
-
-
标记压缩法
-
在标记清除法的基础上再进行一次扫描,把存活的对象放到一端,这样就可以消除内存碎片,内存碎片就是不连续的内存空间,这样不连续的内存空间就被放到一起变成连续的内存空间
-
多了一次移动和扫描的成本
-
垃圾回收算法有哪些 ?
最新推荐文章于 2024-07-08 22:12:26 发布