为什么我的应用会卡顿?垃圾回收中的STW难题与破解之道

清除

清除(Sweep)算法的主要操作是将不再活跃的对象的内存标记为可用,并将这些内存信息记录在一个叫做空闲列表(Free List)的数据结构中。当程序需要实例化新的对象时,内存管理模块会从空闲列表中找到可用的内存空间,分配给新对象。

清除算法的主要缺点是可能导致内存碎片化。因为在堆内存中,对象的存储必须是连续的,可能会出现总的空闲内存充足,但无法找到足够大的连续内存空间来存储新的对象的情况。

另一个缺点是清除策略的内存分配效率较低。如果内存是连续的空间,可以通过简单的指针运算,比如指针加法(Pointer Bumping),快速分配内存。但对于清除算法中的空闲列表,需要逐一检查列表中的每一项,找到足够大的空闲内存来存储新的对象,这个过程相对耗时


赞(0)
未经允许不得转载:小狮博客 » 为什么我的应用会卡顿?垃圾回收中的STW难题与破解之道
分享到: 更多 (0)

联系我们