gpt4 book ai didi

java - JNI - JNIEnv 和 JavaVM 之间的区别

转载 作者:行者123 更新时间:2023-12-02 11:56:58 25 4
gpt4 key购买 nike

As we know JNIEnv is the pointer to the VM.

And as name suggests JavaVM is a VM itself.

Is there any difference between them?

最佳答案

As we know JNIEnv is the pointer to the VM

事实并非如此。
JNIEnvstruct _JNIEnv 的别名,其中又包含 JNINativeInterface*和一堆方法( FindClassGetMethodIDNewLocalRef 等)。
当您通过 JNIEnv* 调用方法时,调用被委托(delegate)给JNINativeInterface实例,其中包含指向运行时提供的实际实现的函数指针。

一个JavaVM另一方面是 struct _JavaVM 的别名,其中包含 JNIInvokeInterface*JNIInvokeInterfaceGetEnv 相比,具有一组不同的方法(例如 AttachCurrentThreadJNINativeInterface ) .

<小时/>

所以他们有不同的目的。 JavaVM*的主要目的就是让你获得一个JNIEnv*这对当前执行线程有效。 JNIEnv*是解析 Java 类、调用 Java 方法等所需的内容。

关于java - JNI - JNIEnv 和 JavaVM 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47529232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com