如何在JNI中释放C++实例?

问题描述 投票:0回答:1

我想知道如何释放c++类的实例。 我尝试了这样的方法,但出现了错误。

Live *pLive = Live::getInstance();
// do something with pLive
env->DeleteLocalRef(reinterpret_cast<jobject>(pLive));

我需要你的帮助。谢谢你。

android memory-leaks java-native-interface jnienv
1个回答
0
投票

由于您没有在 env 上调用任何内容来创建对象,因此我假设 Live::getInstance 返回 C++ 对象而不是 JNI 对象?在这种情况下,请使用删除。您只能在 JNI 对象上使用 DeleteLocalRef。 (JNI对象是实际存在于JVM内部并且可以在Java中直接访问的对象)。尝试在 C++ 对象上删除LocalRef 总是会崩溃,因为它不在 JVM 的共享内存中

© www.soinside.com 2019 - 2024. All rights reserved.