如何释放JNI环境指针
How to free the JNI env pointer?
我有一个典型的c++代码启动JNI:
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块内存泄漏
当您完成Java虚拟机时,您将需要销毁JVM实例:
(*jvm)->DestroyJavaVM(jvm);
JNIEnv
引用是由JVM管理的,所以您不需要显式地释放它。
相关文章:
- 枚举环境变量的惯用C++14/C++17方法
- 通过JNI传递数据数组的最快方法是什么
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 创建一个包含 c++ 默认值的环境文件
- 定义C++新的环境变量并在 bat 文件中使用它
- 为 NewObjectA() 函数创建 jvalues 的参数数组时出错 - JNI Invocation API
- 将 C# DLL 导入 C++ 以用于 JNI
- 用于在并发环境中访问 MMIO 的软件模式
- 用C++包装 Java 库 (JNI)
- docker 构建失败:无法设置环境变量
- 如何通过 JNI 将 C 字符串表情符号传递给 Java
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- 如何使用C JNI环境运行Springboot应用程序
- std::strtoull在我的JNI NDK环境下无法识别
- 静态 c++ 对象中的 JNI 环境指针并调用连续两次使用字符串参数的 Java 函数会使 JVM 崩溃
- JNI 中的 Java 线程C++仅使用一个内核的环境.Arm 处理器和 Ubuntu
- C++程序JNI环境中的内存泄漏
- JNI环境指针
- 如何释放JNI环境指针
- 在多线程应用程序中缓存JNI环境