简体   繁体   English

Android NDK:本地参考表溢出

[英]Android NDK: local reference table overflow

I am having following crash 我正在追踪当机

03-08 19:08:30.734: E/dalvikvm(3821): JNI ERROR (app bug): local reference table overflow (max=512)
03-08 19:08:30.734: W/dalvikvm(3821): JNI local reference table (0x58ca9a48) dump:
03-08 19:08:30.734: W/dalvikvm(3821):   Last 10 entries (of 512):
03-08 19:08:30.734: W/dalvikvm(3821):       511: 0x415005a0 java.lang.Class<android.util.Log>
03-08 19:08:30.734: W/dalvikvm(3821):       510: 0x41cd9688 byte[] (8 elements)
03-08 19:08:30.734: W/dalvikvm(3821):       509: 0x41cc9410 java.lang.Class<ob.android.Stream>
03-08 19:08:30.734: W/dalvikvm(3821):       508: 0x41cd9668 byte[] (8 elements)
03-08 19:08:30.734: W/dalvikvm(3821):       507: 0x41cc9410 java.lang.Class<ob.android.Stream>
03-08 19:08:30.734: W/dalvikvm(3821):       506: 0x41cd9648 byte[] (8 elements)
03-08 19:08:30.734: W/dalvikvm(3821):       505: 0x41cc9410 java.lang.Class<ob.android.Stream>
03-08 19:08:30.742: W/dalvikvm(3821):       504: 0x41cd9628 byte[] (8 elements)
03-08 19:08:30.742: W/dalvikvm(3821):       503: 0x41cc9410 java.lang.Class<ob.android.Stream>
03-08 19:08:30.742: W/dalvikvm(3821):       502: 0x41cd9608 byte[] (8 elements)
03-08 19:08:30.742: W/dalvikvm(3821):   Summary:
03-08 19:08:30.742: W/dalvikvm(3821):       256 of java.lang.Class (5 unique instances)
03-08 19:08:30.742: W/dalvikvm(3821):         2 of java.lang.String (2 unique instances)
03-08 19:08:30.742: W/dalvikvm(3821):       252 of byte[] (8 elements) (252 unique instances)
03-08 19:08:30.742: W/dalvikvm(3821):         1 of java.lang.String[] (2 elements)
03-08 19:08:30.742: W/dalvikvm(3821):         1 of ob.android.Stream
03-08 19:08:30.742: E/dalvikvm(3821): Failed adding to JNI local ref table (has 512 entries)
03-08 19:08:30.742: I/dalvikvm(3821): "main" prio=5 tid=1 RUNNABLE
03-08 19:08:30.742: I/dalvikvm(3821):   | group="main" sCount=0 dsCount=0 obj=0x414f6508 self=0x40fc5a60
03-08 19:08:30.742: I/dalvikvm(3821):   | sysTid=3821 nice=0 sched=0/0 cgrp=apps handle=1075121968
03-08 19:08:30.742: I/dalvikvm(3821):   | schedstat=( 795410159 854705788 2161 ) utm=46 stm=32 core=0
03-08 19:08:30.742: I/dalvikvm(3821):   at android.util.Log.println_native(Native Method)
03-08 19:08:30.742: I/dalvikvm(3821):   at android.util.Log.v(Log.java:119)
03-08 19:08:30.742: I/dalvikvm(3821):   at ob.android.Stream.onResponse(Stream.java:57)
03-08 19:08:30.742: I/dalvikvm(3821):   at ob.android.Stream.stream(Native Method)
03-08 19:08:30.742: I/dalvikvm(3821):   at ob.android.Stream.<init>(Stream.java:30)
03-08 19:08:30.742: I/dalvikvm(3821):   at ob.android.MainActivity.startRecording(MainActivity.java:194)
03-08 19:08:30.742: I/dalvikvm(3821):   at ob.android.MainActivity.access$0(MainActivity.java:192)
03-08 19:08:30.742: I/dalvikvm(3821):   at ob.android.MainActivity$3.doAction(MainActivity.java:120)
03-08 19:08:30.742: I/dalvikvm(3821):   at ob.android.view.ViewFactory$1.onClick(ViewFactory.java:41)
03-08 19:08:30.742: I/dalvikvm(3821):   at android.view.View.performClick(View.java:4222)
03-08 19:08:30.742: I/dalvikvm(3821):   at android.widget.CompoundButton.performClick(CompoundButton.java:100)
03-08 19:08:30.742: I/dalvikvm(3821):   at android.view.View$PerformClick.run(View.java:17273)
03-08 19:08:30.750: I/dalvikvm(3821):   at android.os.Handler.handleCallback(Handler.java:615)
03-08 19:08:30.750: I/dalvikvm(3821):   at android.os.Handler.dispatchMessage(Handler.java:92)
03-08 19:08:30.750: I/dalvikvm(3821):   at android.os.Looper.loop(Looper.java:137)
03-08 19:08:30.750: I/dalvikvm(3821):   at android.app.ActivityThread.main(ActivityThread.java:4895)
03-08 19:08:30.750: I/dalvikvm(3821):   at java.lang.reflect.Method.invokeNative(Native Method)
03-08 19:08:30.750: I/dalvikvm(3821):   at java.lang.reflect.Method.invoke(Method.java:511)
03-08 19:08:30.750: I/dalvikvm(3821):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
03-08 19:08:30.750: I/dalvikvm(3821):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
03-08 19:08:30.750: I/dalvikvm(3821):   at dalvik.system.NativeStart.main(Native Method)
03-08 19:08:30.750: E/dalvikvm(3821): VM aborting
03-08 19:08:30.750: A/libc(3821): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 3821 (ob.android)

following code is called continously, what do you think might be issue that suddenly app crashes. 以下代码被连续调用,您认为可能是突然导致应用程序崩溃的问题。 I want it to run smoothly and continously. 我希望它平稳连续地运行。

SPropRecord* propRec = parseSPropParameterSets(fSubsession.fmtp_spropparametersets(), propNum);
     __android_log_print(ANDROID_LOG_VERBOSE, "RTSP", "Frame: %c", propRec->sPropBytes);
     jmethodID mid;
     jclass handlerClass = env9->FindClass("ob/android/Stream");
     if (handlerClass == NULL) {
         __android_log_print(ANDROID_LOG_VERBOSE, "RTSP-Error", "Class");
     }
     mid = env9->GetStaticMethodID(handlerClass, "onResponse", "([B)V");
     if (mid == NULL) {
         __android_log_print(ANDROID_LOG_VERBOSE, "RTSP-Error", "Method");
     }

     jbyteArray jbArray = env9->NewByteArray((int)propRec->sPropLength);
     env9->SetByteArrayRegion(jbArray, 0, (int)propRec->sPropLength, (jbyte*)propRec->sPropBytes);

     //jobject theClass = env9->FindClass("ob/android/Stream");

     env9->CallStaticVoidMethod(handlerClass, mid, jbArray);
     env9->DeleteLocalRef(jbArray);

i am releasing jbArray references, is there anything else I should release. 我正在发布jbArray引用,还有什么我应该发布的。

You should release handlerClass. 您应该释放handlerClass。 Actually, you don't need to call FindClass every time, because it is enough to call GetStaticMethodID(handlerClass, "onResponse", "([B)V") once and reuse the method id on subsequent iterations. 实际上,您不需要每次都调用FindClass,因为一次调用GetStaticMethodID(handlerClass,“ onResponse”,“([B] V”)并在后续迭代中重用方法ID就足够了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android NDK JNI数组参考表溢出 - Android NDK JNI array reference table overflow Android NDK溢出dalvik JNI本地参考表 - Android NDK overflows dalvik JNI local reference table JNI本地参考表溢出,查看参考表的完整内容 - JNI local reference table overflow, view complete contents of reference table JNI错误(应用错误):本地参考表溢出(最大值= 512)Android - JNI ERROR (app bug): local reference table overflow (max=512) Android Appcelerator Android Ti.Contacts.getAllPeople()JNI错误本地参考表溢出 - Appcelerator Android Ti.Contacts.getAllPeople() jni error local reference table overflow Android Webrtc JNI错误(应用程序错误):本地引用表溢出(最大值= 512) - Android Webrtc JNI ERROR (app bug): local reference table overflow (max=512) Android:JNI错误(app bug):本地引用表溢出(max = 512) - Android : JNI ERROR (app bug): local reference table overflow (max=512) android - kotlin,自定义视图,绑定,膨胀 - JNI 错误(应用程序错误):本地引用表溢出(最大值 = 512) - android - kotlin, custom view, binding, inflating - JNI ERROR (app bug): local reference table overflow (max=512) android NDK中包含本地头文件时的未定义引用 - undefined reference when including a local header file in android NDK 使用NDK的Android未定义引用 - Android undefined reference with NDK
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM