首页 > 编程知识 正文

g1垃圾回收器优缺点,能量回收调节什么意思

时间:2023-05-06 10:47:09 阅读:175638 作者:86

v8的垃圾回收机制基于世代回收机制,该机制又基于世代假设。 这个假说有两个特点,一个是酷米对象容易早死,另一个是不死对象更长寿。 基于这一假设,v8引擎将内存分为酷米一代和老生一代。

新结交的对象和只经历过一次的垃圾回收对象被称为“酷米费”。 多次回收垃圾的对象被称为老一代。

酷酷的米费分为From和To两个空间,To是普通偶像。 在From空间已满时运行Scavenge算法进行垃圾回收。 当我们运行垃圾回收算法时,APP收集逻辑将停止,并在垃圾回收完成后继续执行。 该算法分为三个步骤:

)1)首先,检查From空间的生存对象,如果对象生存,则判断是否满足升级为老生代的条件,如果满足条件,则升级为老生代。 如果不满足条件,则移动To空间。

)2)如果对象不存在,则释放对象的空间。

)3)最后交换From空间和To空间的作用。

酷派米代对象晋升为老生代有两个条件:

)第一,为了判断是否是对象,是否用Scavenge回收过一次。 如果有经验,将对象从From空间复制到老生代; 如果没有经验,就复制到To空间。

)二是To空间的存储器使用占有率是否超过了限制。 对象从From空间复制到To空间时,如果To空间的使用率超过25%,则对象将直接升级为老生代谈。 设定25%的理由主要是在算法结束后,两个区域结束后交换位置。 To区域的内存太小会影响后续的内存分配。

老生采用标记去除法和标记压缩法。 “清除标记”方法首先标记内存中的存活对象,然后在标记完成后清除未标记的对象。 清除标志后,内存碎片增多,后续的内存分配变得不方便。 因此,为了解决内存碎片的问题,引入了标签压缩法。

由于进行垃圾回收时要暂时停止APP的逻辑,酷我这一代的方法内存比较小,每次停止的时间不是很长,但是在我这一代的人身上每次垃圾回收的时间很长,停止会产生很大的影响。 为了解决这个问题,在V8中引入了增量标记的方法,将一次停顿中进行的过程分为多个步骤,每次执行小步骤时执行一段时间的执行逻辑,这样交替执行。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。