在 Java 中,垃圾回收器(Garbage Collector)使用可达性分析算法(Reachability Analysis)来判断对象是否存活。这个算法的基本思想是:通过一系列被称为 "GC Roots"(垃圾回收根节点) 的对象作为起点,向下搜索,如果一个对象到 GC Roots 之间没有任何引用链相连(即不可达),那么这个对象就被认为是垃圾,可以被回收。 在 Java(特别是主流的 HotSpot 虚拟机)中,可以作为 GC Roots 的对象主要包括以下几大类: 1. 核心的四大类(面试最常考) 虚拟机栈(栈帧中的局部变量表)中引用的对象 解释:各个线程正在执行的方法里的局部变量、参数等。 举例:你在某个方法里写了 ,只要这个方法还没执行完, 变量对应的对象就是 GC Root 之一。 方法区中类静态属性引用的对象 解释:Java 类的引用类型静态变量。 举例:,这个 引用的对象就是 GC Root。只要该类不被卸载,它引用的对象就不会被回收。 方法区中常量引用的对象 解释:比如字符串常量池(String Table)里的引用,或者被 修饰的引用类型常量。 举例: 本...