Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是本地同龄人?_Java_Terminology - Fatal编程技术网

Java 什么是本地同龄人?

Java 什么是本地同龄人?,java,terminology,Java,Terminology,本机对等机在有效Java(第二版)中定义如下 终结器的第二个合法使用涉及具有本机对等的对象。本机对等方是一个本机对象,普通对象通过本机方法委托给它。由于本机对等方不是普通对象,垃圾收集器不知道它,并且在回收其Java对等方时无法回收它 在另一个问题中,举例说明。是java类PrintHello还是另一个使用PrintHello的类 在这里,哪一部分被称为本机对等,哪一部分是Java对等,举个例子?我理解finalize的用法,但我只是不清楚本机对象指的是哪一部分。本机对象不仅用java编程,而且

本机对等机在有效Java(第二版)中定义如下

终结器的第二个合法使用涉及具有本机对等的对象。本机对等方是一个本机对象普通对象通过本机方法委托给它。由于本机对等方不是普通对象,垃圾收集器不知道它,并且在回收其Java对等方时无法回收它

在另一个问题中,举例说明。是java类
PrintHello
还是另一个使用
PrintHello
的类


在这里,哪一部分被称为本机对等,哪一部分是Java对等,举个例子?我理解finalize的用法,但我只是不清楚本机对象指的是哪一部分。

本机对象不仅用java编程,而且用特定于平台的语言编程,通常是c或汇编语言

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

本机对等方是Java对象的本机部分

您可以在这里看到一个很好的示例:
一个简单的例子是原生窗口与
JFrame
。JFrame是一个Java对等体,但它需要一个(依赖于平台的)本机对等体来实际显示图形


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

@DimaSan我链接到了这个确切的问题,但它没有解释本机对等体。@DimaSan它实际上与该问题相反,尽管上面的答案也回答了这个问题。这句话已经解释了本机对等体是什么(“一个普通对象通过本机方法委托给的本机对象”),这句话有什么不清楚的地方?我知道什么是本机对象。我不知道什么是本机对等对象。它是对象的本机部分或代码的本机部分?即
public native void printText();
void Happy_printText(struct HHappy*this){…}
它是您正在使用的东西的本机组件。与Java部分相反。您只是因为命名而感到困惑吗?所以在链接的问题中,
print\u hello
类是本机对等的,对吗?