如何检查JNI中的内存泄漏

时间:2012-02-01 15:52:58

标签: java c++ java-native-interface

在我的JNI计划中,我使用

new
delete
env->NewGlobalRef
env->DeleteGlobalRef
jvm->AttachCurrentThread
jvm->DetachCurrentThread

严格检查内存泄漏的好方法是什么?

2 个答案:

答案 0 :(得分:3)

确保每个newenv->NewGlobalRefjvm->AttachCurrentThread都在一个对象的构造函数中,该对象在其析构函数中调用匹配的释放函数。

这是一种名为RAII的技术,对于用C ++编写任何正确的程序至关重要。

答案 1 :(得分:0)

  • 首先尝试使用smart pointers
  • 正如Mankarse指出的那样,尽可能使用RAII习语创建和删除全局引用。
  • 尽可能减少全局差异使用
  • 在循环中构建它们时的免费本地引用

请查看here以管理参考资料。

您是否已经知道您的本机代码正在泄漏内存?