Referenztischüberlauf (max = 512) JNI

Ich bin ein bisschen mit diesem verklemmt … ReferenceTable Überlauf (max = 512), ich bin sicher, es hat mit der Anzahl der lokalen Referenzen zu tun, die in meinem nativen Methodenaufruf erstellt werden … Um das Problem umzugehen, habe ich sogar Versucht, die lokalen Referenzen aus dem nativen Anruf zu entfernen; Aber trotzdem bin ich nicht in der Lage, das Problem zu lösen … Ich gebe ein 2D Array vorbei; Das ist genauer 1024 x 1024 …

Hier ist die Fehler-Trace, auf die ich mich beziehe … Ich bin mir sicher, dass die Anzahl der Integer-Objekte, die erstellt werden, das Problem für meinen Fall verursacht … wie du in der Lage sein soll, 506 zu sehen (I) Objekte werden erstellt … Und Dann schlägt JNI den Flaschenhals …

  • Sortierung Arraylist der String in Android
  • Wo bekomme ich einen Open-Source-Radio-Treiber und RIL für ein Android-Handy?
  • Wie man Google Map Fragment innerhalb der Scroll-Ansicht festlegt
  • Android Set Inhalt Typ HttpPost
  • Einrichten von Android-Support-Paket v7 für Eclipse - GridLayout
  • Wie kann man den Internet-Zugang auf Android überprüfen? InetAddress geht nie aus
  • /dalvikvm(9498): GC_CONCURRENT freed 1981K, 41% free 6891K/11527K, external 1625K/2137K, paused 2ms+3ms /dalvikvm(9498): ReferenceTable overflow (max=512) /dalvikvm(9498): Last 10 entries in JNI local reference table: /dalvikvm(9498): 502: 0x40710920 cls=[I (4092 bytes) /dalvikvm(9498): 503: 0x40711920 cls=[I (4092 bytes) /dalvikvm(9498): 504: 0x40712920 cls=[I (4092 bytes) /dalvikvm(9498): 505: 0x40713920 cls=[I (4092 bytes) /dalvikvm(9498): 506: 0x40714920 cls=[I (4092 bytes) /dalvikvm(9498): 507: 0x40715920 cls=[I (4092 bytes) /dalvikvm(9498): 508: 0x40716920 cls=[I (4092 bytes) /dalvikvm(9498): 509: 0x40717920 cls=[I (4092 bytes) /dalvikvm(9498): 510: 0x40718920 cls=[I (4092 bytes) /dalvikvm(9498): 511: 0x40719920 cls=[I (4092 bytes) /dalvikvm(9498): JNI local reference table summary (512 entries): /dalvikvm(9498): 1 of Ljava/lang/Class; 236B /dalvikvm(9498): 1 of Ljava/lang/Class; 284B /dalvikvm(9498): 1 of Ljava/lang/Class; 572B /dalvikvm(9498): 2 of Ljava/lang/String; 28B (2 unique) /dalvikvm(9498): 506 of [I 4092B (506 unique) /dalvikvm(9498): 1 of [Ljava/lang/String; 28B /dalvikvm(9498): Memory held directly by tracked refs is 2071728 bytes /dalvikvm(9498): Failed adding to JNI local ref table (has 512 entries) /dalvikvm(9498): "main" prio=5 tid=1 RUNNABLE /dalvikvm(9498): | group="main" sCount=0 dsCount=0 obj=0x4001f198 self=0xce60 /dalvikvm(9498): | sysTid=9498 nice=0 sched=0/0 cgrp=default handle=-1345006528 /dalvikvm(9498): | schedstat=( 6990020745 1042358411 1629 ) /dalvikvm(9498): at pv.ndk.UcMobile.losInitialization(Native Method) /dalvikvm(9498): at pv.ndk.NdkActivity.onCreate(NdkActivity.java:69) /dalvikvm(9498): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) /dalvikvm(9498): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 

    Hier ist der Code, den ich verwende: Bitte lassen Sie mich wissen, was ist das, was ich falsch mache?

     JNIEXPORT jboolean JNICALL Java_pv_ndk_UcMobile_losInitialization (JNIEnv * env, jobject jobj , jint height, jint width , jobjectArray elements){ elevData = new unsigned int*[height]; for(i=0; i< height; i++) { elevData[i] = new unsigned int[width]; jintArray oneDim= (jintArray)env->GetObjectArrayElement( elements, i); jint *element=env->GetIntArrayElements(oneDim, 0); for(j=0; j< width; j++) { elevData[i][j]= element[j]; } // This does not seem to be providing with the desired result // env->DeleteLocalRef(element); //I even tried with this approach env->ReleaseIntArrayElements(oneDim, element , 0); } return losObject.Init(elevData,1,10,2,2); } 

  • Genymotion startet kein virtuelles Android-Gerät
  • Android: NoClassDefFoundError android.os.AsyncTask
  • Gradle-Standort ist falscher Fehler beim Importieren von ActionBarsherlock in Android Studio
  • Edittext Android-Schwerpunkt
  • Mehrere Instanzen der ausstehenden Absicht
  • Kann nicht beide Klick- und Berührungsereignisse gleichzeitig behandeln
  • One Solution collect form web for “Referenztischüberlauf (max = 512) JNI”

    Sie müssen die lokale Referenz aus oneDim Objekt löschen: env->DeleteLocalRef(oneDim); .

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.