Java面试题

题目

Jvm 有哪些垃圾回收算法,聊聊他们的优缺点

答案

概述

Jvm 垃圾回收算法有标记清除法,复制算法和标记整理法。

标记清除法

定义

分为两个阶段,标记阶段和清除阶段,标记阶段先将那些没有被引用的垃圾对象打上标记,回收阶段的时候,将打上标记的垃圾对象回收。

优点

简单。

缺点

  1. 容易产生碎片。
  2. 扫描空间两次
  3. 标记清除法:分为两个阶段,标记阶段和清除阶段,标记阶段先将那些没有被引用的垃圾对象打上标记,回收阶段的时候,将打上标记的垃圾对象回收

复制算法

定义

将内存分为两个空间,先遍历存放变量的空间,标记出里面存活的对象,并且将这些对象拷贝到另一个空间中。之和将该空间中剩下的没有被引用的垃圾对象回收。

优点

GC 后的内存空间时连续的。

缺点

  1. 比较浪费空间,空间不能完全利用。
  2. 需要复制移动对象。

标记整理法

定义

分为两个阶段,标记和整理阶段,标记阶段是找出内存中不存活的对象,然后将存活的对象向前压缩,将所有的存活对象都放在一起。之后将存活对象的边界以外的空间整理掉,这样防止了碎片的产生。

优点

避免了标记清除和复制算法的缺点。

缺点

效率比较低。