面试题答案
一键面试- 根对象定义:
- 垃圾回收器将一些特定对象视为“根对象”。这些根对象包括:
- 全局变量,即应用程序域中全局范围内可访问的变量。
- 栈上的局部变量,比如方法内部声明的变量。
- CPU寄存器中的变量。
- 垃圾回收器将一些特定对象视为“根对象”。这些根对象包括:
- 标记阶段:
- 垃圾回收器从根对象开始遍历。它使用有向图的方式,从根对象出发,沿着对象之间的引用关系,标记所有可达的对象。
- 例如,若根对象A引用对象B,对象B引用对象C,那么A、B、C都会被标记为可达对象。
- 未标记对象判断:
- 在标记完成后,没有被标记的对象则被认为是不可达对象。
- 不可达对象就符合垃圾回收的条件,因为从根对象出发无法访问到它们,意味着程序不再有途径使用这些对象。
- 回收阶段:
- 垃圾回收器会在合适的时机回收这些符合条件(不可达)的对象所占用的内存空间,将这些内存归还给系统,以便重新分配使用。
- 同时,垃圾回收器可能会对内存进行压缩整理,将存活对象紧凑排列,减少内存碎片,提高内存使用效率。