解答
jvm中的垃圾回收算法主要包括:标记-清除算法,标记-整理算法和复制算法。
标记清除算法:分为标记和清除两个阶段,在标记阶段中会通过可达性分析算法的到不需要回收的对象并在它们的对象头上标记。在清除阶段会将为标记的对象清除并返回得到的空闲块,同时维护了一种空闲列表存储这些空闲块,若两个空闲块物理地址上没有间隔就会合并成同一个块,在给对象分配内存时会变量空闲列表找到内存大于等于分配对象的块,若等于则直接返回,若大于则分为两块返回一块保留一块。缺点:标记和清除过程效率都不高还会造成空间碎片化,适用于老年代的垃圾回收。
标记整理算法:它的标记阶段和标记-清除算法相同,标记完后会将存活下来的对象向内存的一侧移动,然后回收边界意外的内存。不会造成内存随便化,但是大量对象的移动效率很低。适用于老年代收集。
复制算法:将内存区域分为大小相等的两块,每次只使用其中一块,垃圾回收时将存活对象移动到另一块,该块内存全部回收。该算法空间利用率很低适合回收频率很高的新生带。
帖子还没人回复快来抢沙发