2
我在C++「監聽器類」(或多或少)中調用了一些Java對象的某個函數。我懷疑有內存泄漏:實現JNI監聽器
JNIEnv *env = NULL;
vm_->AttachCurrentThread(&env, NULL);
const jclass cls = env->FindClass(...);
const jmethodID meth = env->GetMethodID(...);
const jobject obj = env->NewObject(cls, meth, ...);
[ more code ]
env->DeleteLocalRef(obj);
我的問題是:我應該也釋放CLS和甲基本地參考? JNI文檔不太清楚。
由於某種內存分配。看來內存泄漏是在我鏈接到的本地庫中,而不是在我的JNI代碼中。 無論如何,我剛剛發現了Push/PopLocalFrame(),並且使用它們要比釋放每個本地引用容易得多。 – 2010-03-18 08:33:25