gc怎么确定要回收哪些对象
Java 通过可达性分析算法来判断一个对象是否还存活。

通过一组名为 “GC Roots” 的根对象,进行递归扫描,无法从根对象到达的对象就是“垃圾”,可以被回收。
这也是 G1、CMS 等主流垃圾收集器使用的主要算法。
什么是引用计数法?
每个对象有一个引用计数器,记录引用它的次数。当计数器为零时,对象可以被回收。
引用计数法无法解决循环引用的问题。例如,两个对象互相引用,但不再被其他对象引用,它们的引用计数都不为零,因此不会被回收。
Java 通过可达性分析算法来判断一个对象是否还存活。

通过一组名为 “GC Roots” 的根对象,进行递归扫描,无法从根对象到达的对象就是“垃圾”,可以被回收。
这也是 G1、CMS 等主流垃圾收集器使用的主要算法。
什么是引用计数法?
每个对象有一个引用计数器,记录引用它的次数。当计数器为零时,对象可以被回收。
引用计数法无法解决循环引用的问题。例如,两个对象互相引用,但不再被其他对象引用,它们的引用计数都不为零,因此不会被回收。