私はこのスレッドによるによる私のネイティブコードのリークにこのエラーを取得しておいてください。"JNIエラー(アプリのバグ):弱いグローバル参照テーブルのオーバーフロー"なぜですか?
ReferenceTable overflow (max=512) JNI
まだ、それは私にAttachCurrentThread漏れです。
私はこのコードを試してみましたし、それが
// this code LEAKS!
// C++:
void Engine::UpdateCamera(float x, float y, float z) {
JNIEnv *jni;
app_->activity->vm->AttachCurrentThread(&jni, NULL);
//Do nothing
app_->activity->vm->DetachCurrentThread();
return;
}
// Java
public void updateCamera(final float x, final float y, final float z) {
if (_label2 == null)
return;
StackTraceElement trace = new Exception().getStackTrace()[0];
Log.e(APP_TAG, "Called:" +
trace.getClassName() + "->" + trace.getMethodName() + ":" + trace.getLineNumber());
}
をリークその後、私は単純にすべてをコメントアウトし、プログラムが漏れて停止し、永遠に走った:(
// this code never leaks, but it does not do anything either
void Engine::UpdateCamera(float x, float y, float z) {
JNIEnv *jni;
//app_->activity->vm->AttachCurrentThread(&jni, NULL);
//app_->activity->vm->DetachCurrentThread();
return;
}
誰もがAttachCurrentThreadの問題をリークして経験していますか?
感謝
「メッセージ」への参照が削除されていません – user2543253
すべてを削除してもリークしました。 AttachCurrentThreadが問題を引き起こしているようです。あなたが私を答えに導くことができるなら、私の評判から50ポイントはグラブです。 – gmmo
いくつのスレッドが実行されていますか?エラーが発生する前に 'Engine :: UpdateCamera()'をどのくらい頻繁に呼び出しますか? –