gpt4 book ai didi

c++ - 如何释放 JNI env 指针?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:11 25 4
gpt4 key购买 nike

我有一个启动 JNI 的典型 C++ 代码:

JNIEnv* env = NULL;
...
ProcAdd = ( JNI_JVMPROC ) GetProcAddress( hinstLib, "JNI_CreateJavaVM" );
jint createResult = ( ProcAdd ) ( &m_jvm, ( void** ) & env, &vm_args );

这很好用。但是,我不会在我的代码中的任何地方释放环境。我想知道我是否需要释放它?如果是,怎么做?

我在我的代码上运行了 PurifyPlus,它让我在上面代码中的以下行泄漏:

jint createResult = ( ProcAdd ) ( &m_jvm, ( void** ) & env, &vm_args );

PurifyPlus 给出的警告是:

[W] MLK:在 JVM_FindSignal [JVM.DLL] 中分配的 120 个 block 内存泄漏 25941 字节

最佳答案

完成 Java 虚拟机后,您需要销毁 JVM 实例:

(*jvm)->DestroyJavaVM(jvm); 

JNIEnv 引用由 JVM 管理,因此您无需显式释放它。

关于c++ - 如何释放 JNI env 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592625/

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