zoukankan      html  css  js  c++  java
  • jni 出错 ReferenceTable overflow

    一、多次NewByteArray后,报错“ReferenceTable overflow”

    解决办法:释放所有对object的引用

    例: jbyteArray audioArray = jnienv->NewByteArray(frameSize);
           jnienv->SetByteArrayRegion(audioArray,0,frameSize,(jbyte*)fReceiveBuffer);
           jnienv->DeleteLocalRef(audioArray);

    1.FindClass 

    例如,

    jclass ref= (env)->FindClass("java/lang/String");
    
    env->DeleteLocalRef(ref); 
    

     

    2.NewString/ NewStringUTF/NewObject/NewByteArray

    例如,

    jstring     (*NewString)(JNIEnv*, const jchar*, jsize);    
    
    const jchar* (*GetStringChars)(JNIEnv*, jstring, jboolean*);     
    
    void        (*ReleaseStringChars)(JNIEnv*, jstring, const jchar*);
    
    jstring     (*NewStringUTF)(JNIEnv*, const char*);    
    
    const char* (*GetStringUTFChars)(JNIEnv*, jstring, jboolean*);     
    
    void        (*ReleaseStringUTFChars)(JNIEnv*, jstring, const char*);
    
    env->DeleteLocalRef(ref);
    

     

    3.GetObjectField/GetObjectClass/GetObjectArrayElement

    jclass ref = env->GetObjectClass(robj);
    
    env->DeleteLocalRef(ref); 
    

     

    4.GetByteArrayElements

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

     

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

    (*env)->ReleaseStringUTFChars(env,jinput,input);

     

    6.NewGlobalRef/DeleteGlobalRef

     jobject     (*NewGlobalRef)(JNIEnv*, jobject);     
    
    void        (*DeleteGlobalRef)(JNIEnv*, jobject);
    

    例如,

    jobject ref= env->NewGlobalRef(customObj);
    
    env->DeleteGlobalRef(customObj);
  • 相关阅读:
    浏览网页的过程
    端口转发和端口映射
    代码审计入门之BlueCMS v1.6 sp1
    php伪协议总结
    phar反序列化
    iOS开发之GCD使用总结
    深入理解Android NDK日志符号化
    Android 开源项目源码解析之DynamicLoadApk 源码解析
    Gilt如何将微服务部署到AWS环境,介绍ION-Roller
    100分程序员的8个习惯
  • 原文地址:https://www.cnblogs.com/wyqfighting/p/3005735.html
Copyright © 2011-2022 走看看