JNI ERROR (bug de la aplicación): desbordamiento de la tabla de referencia local (máx = 512)
Estoy tratando de ejecutar el proyecto LibSVMAndroidClassification Android con mi propio conjunto de datos. Funciona perfectamente bien con el conjunto de datos ya proporcionado y también funciona bien cuando uso mi csv con 100 filas (que es menos del 1% del tamaño original). Pero cuando intento ir para "tren CSV" con por ejemplo 1000 filas entonces veo este error. Incluso intenté establecer android: largeHeap = "true" en Manifest.xml pero nada mejoró.
Este es mi volcado de logcat.
- Jni llama al método java que toma una interfaz java personalizada como parámetro
- ¿Cómo hago que el método JNI no llame estático cuando se usan objetos nativos de C ++?
- ¿Cómo crear un objeto con JNI?
- Asignación simple que viene con valor incorrecto
- Android - javah no encuentra mi clase
10-31 17:49:06.745: E/dalvikvm(2008): JNI ERROR (app bug): local reference table overflow (max=512) 10-31 17:49:06.745: W/dalvikvm(2008): JNI local reference table (0x754057e0) dump: 10-31 17:49:06.745: W/dalvikvm(2008): Last 10 entries (of 512): 10-31 17:49:06.745: W/dalvikvm(2008): 511: 0x42d900b0 double 10-31 17:49:06.745: W/dalvikvm(2008): 510: 0x42a19698 int 10-31 17:49:06.745: W/dalvikvm(2008): 509: 0x42d8ff78 double 10-31 17:49:06.745: W/dalvikvm(2008): 508: 0x42a195f0 int 10-31 17:49:06.745: W/dalvikvm(2008): 507: 0x42d8fe40 double 10-31 17:49:06.745: W/dalvikvm(2008): 506: 0x42a19548 int 10-31 17:49:06.745: W/dalvikvm(2008): 505: 0x42d8fd08 double 10-31 17:49:06.745: W/dalvikvm(2008): 504: 0x42a194a0 int 10-31 17:49:06.745: W/dalvikvm(2008): 503: 0x42d8fbd0 double 10-31 17:49:06.745: W/dalvikvm(2008): 502: 0x42a193f8 int 10-31 17:49:06.745: W/dalvikvm(2008): Summary: 10-31 17:49:06.745: W/dalvikvm(2008): 5 of java.lang.Class (4 unique instances) 10-31 17:49:06.745: W/dalvikvm(2008): 3 of java.lang.String (3 unique instances) 10-31 17:49:06.745: W/dalvikvm(2008): 249 of int (249 unique instances) 10-31 17:49:06.745: W/dalvikvm(2008): 1 of int 10-31 17:49:06.745: W/dalvikvm(2008): 250 of double (250 unique instances) 10-31 17:49:06.745: W/dalvikvm(2008): 1 of java.lang.String 10-31 17:49:06.745: W/dalvikvm(2008): 1 of int[] 10-31 17:49:06.745: W/dalvikvm(2008): 1 of edu.sinica.citi.mac.android.actclassification.ActClassificationActivity 10-31 17:49:06.745: W/dalvikvm(2008): 1 of double[] 10-31 17:49:06.745: E/dalvikvm(2008): Failed adding to JNI local ref table (has 512 entries) 10-31 17:49:06.745: I/dalvikvm(2008): "main" prio=5 tid=1 RUNNABLE 10-31 17:49:06.745: I/dalvikvm(2008): | group="main" sCount=0 dsCount=0 obj=0x42027710 self=0x420115f0 10-31 17:49:06.745: I/dalvikvm(2008): | sysTid=2008 nice=0 sched=0/0 cgrp=apps handle=1074106620 10-31 17:49:06.745: I/dalvikvm(2008): | state=R schedstat=( 774483646 137982240 4930 ) utm=59 stm=18 core=1 10-31 17:49:06.745: I/dalvikvm(2008): at edu.sinica.citi.mac.android.actclassification.ActClassificationActivity.svmtrain(Native Method) 10-31 17:49:06.745: I/dalvikvm(2008): at edu.sinica.citi.mac.android.actclassification.ActClassificationActivity.train_csv(ActClassificationActivity.java:329) 10-31 17:49:06.745: I/dalvikvm(2008): at edu.sinica.citi.mac.android.actclassification.ActClassificationActivity$2.onClick(ActClassificationActivity.java:125) 10-31 17:49:06.745: I/dalvikvm(2008): at android.view.View.performClick(View.java:4249) 10-31 17:49:06.745: I/dalvikvm(2008): at android.view.View$PerformClick.run(View.java:17764) 10-31 17:49:06.745: I/dalvikvm(2008): at android.os.Handler.handleCallback(Handler.java:730) 10-31 17:49:06.745: I/dalvikvm(2008): at android.os.Handler.dispatchMessage(Handler.java:92) 10-31 17:49:06.745: I/dalvikvm(2008): at android.os.Looper.loop(Looper.java:137) 10-31 17:49:06.745: I/dalvikvm(2008): at android.app.ActivityThread.main(ActivityThread.java:5137) 10-31 17:49:06.745: I/dalvikvm(2008): at java.lang.reflect.Method.invokeNative(Native Method) 10-31 17:49:06.745: I/dalvikvm(2008): at java.lang.reflect.Method.invoke(Method.java:525) 10-31 17:49:06.745: I/dalvikvm(2008): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:752) 10-31 17:49:06.745: I/dalvikvm(2008): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:568) 10-31 17:49:06.745: I/dalvikvm(2008): at miui.dexspy.DexspyInstaller.main(DexspyInstaller.java:171) 10-31 17:49:06.745: I/dalvikvm(2008): at dalvik.system.NativeStart.main(Native Method) 10-31 17:49:06.745: E/dalvikvm(2008): VM aborting 10-31 17:49:06.745: A/libc(2008): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 2008 (tclassification)
He googled mucho pero todavía soy incapaz de entender el fondo y la razón detrás de esto. Muchas personas han enfrentado el mismo error en diferentes situaciones. ¿Qué puede ser un indicador adecuado para la solución?
Gracias por adelantado !
- Error durante la compilación de la muestra de jni de android: inválido -march = opción: `armv5te '
- Generación de archivos .so en Android Studio 1.0.2 con NDK
- Construyendo OpenSSL en Android NDK
- Utilizar bibliotecas jni de 32 bits en android de 64 bits
- Cómo utilizar bibliotecas extra * .so en Android Studio y NDK
- Android: 'No se pudo cargar Foo: findLibrary returned null'
- OpenCV en Android - Encabezados; No hay tal directorio de archivos
- JNI de Android no encuentra archivos de encabezado de biblioteca estándar de C ++
Será mejor utilizar DeleteLocalRef para eliminar la referencia local que nunca se utilizará más tarde. p.ej
for (int i = 0; i < 512; i++) { jobject obj = env->GetObjectArrayElement(array, i); //your code here env->DeleteLocalRef(obj); }
- Cómo iniciar una actividad con una animación completamente programada
- Las siguientes clases no se pudieron instanciar: – com.google.android.gms.plus.PlusOneButton