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