3
我有以下的原生程序:如何發佈從本機代碼發回到Java的jstring?
void sendMessage(const char* text)
{
JNIEnv* env;
if(!_jvm)
return;
_jvm->AttachCurrentThread(&env, NULL);
if(!_nativesCls)
_nativesCls = env->FindClass("com/foo/BaseLib");
if(_nativesCls == 0)
return;
jstring message = env->NewStringUTF(text);
if(!_sendStr)
_sendStr = env->GetStaticMethodID(_nativesCls, "onMessage", "(Ljava/lang/String;)V");
if(_sendStr)
env->CallStaticVoidMethod(_nativesCls, _sendStr, message);
//env->ReleaseStringUTFChars(message, text); // <----- * NOT WORKING
}
如果我跑這是是,它工作得很好,直到內存已滿,並且我得到:
ReferenceTable溢出(最大值= 512)
我認爲添加上面的註釋行可以解決這個問題,但它只是導致應用程序在那一刻爆炸。
有什麼建議嗎?
太棒了,把它改爲env-> DeleteLocalRef(message);它的工作!謝謝 – 2011-01-09 01:34:01