美文网首页Android NDK开发Android开发经验谈Android知识
0x04 JNI内存释放 - 防止内存泄漏/OOM

0x04 JNI内存释放 - 防止内存泄漏/OOM

作者: lc_fan | 来源:发表于2018-03-20 12:13 被阅读22次

    有时android报错堆栈显示错误码512,并显示多少个object、string、class,说明该类型某变量没有释放。
    返回java层的不必release,gc自动回收。

    释放方法

    1.env->DeleteLocalRef(ref)

    • jclass ref= (env)->FindClass("java/lang/String");
    • jclass ref = env->GetObjectClass(robj);
    • jstring (NewString)(JNIEnv, const jchar*, jsize);
    • jstring (NewStringUTF)(JNIEnv, const char*);

    2. env->DeleteGlobalRef(globalRef);

    • jobject globalRef = env->NewGlobalRef(customObj);

    3. env->ReleaseStringUTFChars(jinput,input);

    const char* input =env->GetStringUTFChars(jinput, &isCopy);

    4. env->ReleaseStringUTFChars( jstring, const char*)

    const char* (GetStringUTFChars)(JNIEnv, jstring, jboolean*);

    5. env->ReleaseByteArrayElements(jarray,array,0);

    jbyte* array= env->GetByteArrayElements(jarray,&isCopy);

    相关文章

      网友评论

        本文标题:0x04 JNI内存释放 - 防止内存泄漏/OOM

        本文链接:https://www.haomeiwen.com/subject/algvqftx.html