什么是本地节点?

4

Effective Java (第2版) 中定义了本地对等体(Native peer)如下:

finalizer 的第二个合理用途涉及具有本地对等体的对象。 本地对等体是通过本地方法委派给普通对象的本地对象。 因为 本地对等体不是普通对象,所以垃圾回收器不知道它并且无法在其 Java 对等体被回收时回收它。

在另一个问题"java peer"中,使用示例解释了什么是 Java 对等体。这是 Java 类 PrintHello 还是使用 PrintHello 的其他类?

这里所说的本地对等体是哪一部分,哪一部分是 Java 对等体,请举例说明。我理解 finalize 的用法,只是不清楚本地对等体指的是哪一部分。


1
@DimaSan 我链接到了这个确切的问题,但它没有解释原生对等连接。 - SMUsamaShah
1
@DimaSan,实际上这个问题是相反的,尽管最佳答案也回答了这个问题。 - Michael
1
那句话已经解释了什么是本地对等体(“一个普通对象通过本地方法委托给本地对象”),这句话有什么不清楚的? - Mark Rotteveel
2个回答

3

我知道什么是本地对象。我不知道什么是本地对等体。 - SMUsamaShah
这是对象的本地部分。 - Andres
对象的本地部分还是代码?例如:public native void printText(); 或者 void Happy_printText(struct HHappy *this) {...} - SMUsamaShah

2
一个简单的例子就是原生窗口和JFrameJFrame 是一个 Java 对等体,但它需要一个(平台相关的)本地对等体来实际显示图形。
这就是为什么当你想要摆脱 JFrame 时需要调用 dispose()。你需要显式地摆脱本地组件,因为 GC 不能触及它。

1
这是您正在使用的本地组件。与Java部分相对。您只是因为命名而感到困惑吗? - Kayaman
那么在链接的问题中,print_hello 类是本地对等体,对吗? - SMUsamaShah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接