什么是本地对等体?

What is a native peer?

Native peer 在 Effective Java (2nd) 中定义如下

A second legitimate use of finalizers concerns objects with native peers. A native peer is a native object to which a normal object delegates via native methods. Because a native peer is not a normal object, the garbage collector doesn’t know about it and can’t reclaim it when its Java peer is reclaimed.

在另一个问题中java peer举例说明。是 java class PrintHello 还是另一个使用 PrintHello 的 class?

这里什么部分被称为本地对等点,哪个部分是Java 对等点,有什么例子吗?我了解 finalize 的用法,我只是对引用的本地对等部分感到困惑。

原生对象不仅可以用 java 编程,还可以用特定于平台的语言编程,通常是 c 或汇编语言。

GC 无法释放由此代码分配的内存。因此,您可能需要在终结器中对其进行清理。

本机对等点是 Java 对象的本机部分。

你可以在这里看到一个很好的例子: https://www.javaworld.com/article/2077520/learn-java/java-tip-23--write-native-methods.html

一个简单的例子是本地 window 与 JFrameJFrame 是 Java 对等点,但它需要(依赖于平台的)本机对等点才能实际显示图形。

这就是为什么在删除 JFrame 时需要调用 dispose() 的原因。您需要明确地摆脱本机组件,因为 GC 无法触及它。