什么是本地对等体?
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 与 JFrame
。 JFrame
是 Java 对等点,但它需要(依赖于平台的)本机对等点才能实际显示图形。
这就是为什么在删除 JFrame
时需要调用 dispose()
的原因。您需要明确地摆脱本机组件,因为 GC 无法触及它。
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 与 JFrame
。 JFrame
是 Java 对等点,但它需要(依赖于平台的)本机对等点才能实际显示图形。
这就是为什么在删除 JFrame
时需要调用 dispose()
的原因。您需要明确地摆脱本机组件,因为 GC 无法触及它。