JNI错误(应用错误):本地参考表溢出(最大值= 512) [英] JNI ERROR (app bug): local reference table overflow (max=512)

查看:60
本文介绍了JNI错误(应用错误):本地参考表溢出(最大值= 512)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用自己的数据集运行 LibSVMAndroidClassification Android项目.它与已经提供的数据集完美配合,当我使用100行(小于原始大小的1%)的csv时,也可以配合使用.但是,当我尝试使用例如1000行的"Train CSV"时,我会看到此错误.我什至尝试在Manifest.xml中设置android:largeHeap ="true",但没有任何改善.

I am trying to run the LibSVMAndroidClassification Android project with my own dataset. It works perfectly fine with the dataset already provided and it also works fine when I use my csv with 100 rows (which is less than 1% of original size). But when I try to go for "Train CSV" with for e.g 1000 rows then I see this error. I even tried to set android:largeHeap="true" in Manifest.xml but nothing improved.

这是我的logcat转储.

This is my logcat dump.

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)

我在Google上搜索了很多,但仍然无法理解其背后的背景和原因.许多人在不同情况下都遇到了相同的错误.什么是解决方案的合适指针?

I have googled a lot but still I am unable to understand the background and reason behind this. Many people have faced this same error in different situations. What can be a suitable pointer to the solution ?

提前谢谢!

推荐答案

您最好使用DeleteLocalRef删除以后不再使用的本地引用. 例如

you'd better use DeleteLocalRef to delete the local reference that never be used later. e.g.

for (int i = 0; i < 512; i++)
{
        jobject obj = env->GetObjectArrayElement(array, i);
        //your code here    
        env->DeleteLocalRef(obj);   
}

这篇关于JNI错误(应用错误):本地参考表溢出(最大值= 512)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆