ネイティブ バッファを作成し、そこにデータを読み書きして JNI ブリッジ経由で通信する SDK/NDK ベースのアプリがあります。4.4 (DALVIK) では正常に機能します - または、少なくとも例外をスローしていませんでした。ART が必須になると、つまり Lollipop では、アプリの終了/終了時に失敗するようになりました。ここで直接バッファを作成します。
JNIEXPORT void JNICALL Java_com_class_nativeOnDirect(JNIEnv* jenv, jobject obj, jobject m, jobject mv){
GLubyte* _dData;
_dData = (GLubyte*)jenv->GetDirectBufferAddress(m);
}
直接データの消去:
JNIEXPORT void JNICALL Java_com_class_nativeOnFreeNativeBuffer(JNIEnv* jenv, jobject obj, jobject m){
jenv->DeleteGlobalRef(m);
}
これについていくつかの調査を行った後、なぜこれが起こるのかはまだはっきりしていません。ところで-「DeleteGlobalref(jobjct)が発生しない場合-例外はスローされません。ここでメモリリークが発生することを恐れています。よろしくお願いします