JNI 和垃圾收集器

本节中的描述阐述了 JNI 实现如何确保垃圾收集器 (GC) 能够访问对象。

有关 GC 的常规信息,请参阅 内存管理

要收集不可访问的对象, GC 必须知道 Java 对象何时被本机代码引用。 JNI 实现使用“根集”来确保对象可访问。 根集是一组 GC 可跟踪的直接(通常可重新定位)对象引用。

根集的类型有多种。 所有根集的并集将为 GC 标记阶段提供对象的起始集。 GC 将从该起始集合开始遍历整个对象引用图表。 保留为未标记的任何对象都是不可访问的垃圾。 (这一描述是同时考虑了可访问性和弱引用的情况下的极为简单化的描述。 请参阅 OpenJ9 用户文档 和 JVM 规范中的 堆分配 。)