面试官你好,关于垃圾收集算法,我是这样理解的。
首先,常见的垃圾收集算法主要有三种。第一种是复制算法,它的核心思想是把内存空间一分为二,每次只使用其中一块,用完以后把存活的对象复制到另一块上,然后清空原来的那块。这样做的好处是没有内存碎片,缺点是内存利用率很低,因为总有一半的空间是闲置的。第二种是标记清除算法,它先标记出所有需要回收的对象,再统一清除。它的优点是效率高、执行快,但缺点是会产生大量内存碎片,时间长了可能会导致大对象无法分配连续内存。第三种是标记整理算法,它是在标记清除的基础上做的改进,标记完存活对象后,会把这些对象向内存一端移动,然后直接清理掉边界以外的垃圾。这样就没有内存碎片了,但因为需要移动对象,所以效率相对较低,尤其是老年代里存活对象很多的时候,移动成本比较高。
黑马程序员广州中心 黑马程序员 我在广州黑马程序员学AI智能应用 面试题 每日一题
