最近在使用Runtime for Android的时候报了个错误,不知道如何解决。
软件环境:Android 6.0、ArcGIS Runtime for Android 100.6
硬件环境:华为青春版 m3
操作:对选中的FeatureLayer进行属性查询
数据量:FeatureLayer 中的数据约3万条记录,存放于geodatabase中
查询的源代码:
fun QueryFeatureByAttrubute(targetLayer:FeatureLayer,fuzzyText:String,queryCallBack: FeatureQueryResultCallBack){ if(targetLayer==null)
return
var env =targetLayer.fullExtent
var parm=QueryParameters()
parm.geometry=env
var future =targetLayer.featureTable.queryFeaturesAsync(parm)
var fields=targetLayer.featureTable.fields
future.addDoneListener {
try {
var fqrc =FeatureQueryResultClass()
fqrc.lyrName=targetLayer.name
fqrc.features=ArrayList<Feature>()
fqrc.tag="0"
var result = future.get()
if (result != null) {
var iterator =result.iterator()
var feature: Feature
while (iterator.hasNext()) {
feature = iterator.next()
for(fd in fields)
{
// if(fd.fieldType==Field.Type.TEXT) {
var fdName = fd.name
var fValue = feature.attributes[fdName].toString()
if (fValue.contains(fuzzyText)) {
fqrc.features.add(feature)
break
}
//}
}
}
queryCallBack.callback(fqrc)
// iterator.remove()
}
} catch (e: Exception) {
Log.e("查询要素", "查询要素异常: " + e.message)
}
}
}interface FeatureQueryResultCallBack {
fun callback(res:FeatureQueryResultClass)
}
fun QueryAttributeSingleLyr(queryString:String){
if (TextUtils.isEmpty(queryString))
return
var item = spLayerSelect.selectedItem as SpinnerItem
var tarLyr = item.Hiden as FeatureLayer
queryResultDatas = ArrayList()
queryResultAdapter = ExpendListViewAdapter(mCtx, queryString,queryResultDatas)
root.elQueryResultList.setAdapter(queryResultAdapter)
root.elQueryResultList.setChildDivider(ColorDrawable(Color.LTGRAY))
root.elQueryResultList.setChildDivider(ColorDrawable(Color.LTGRAY))
root.elQueryResultList.divider=ColorDrawable(Color.LTGRAY)
root.elQueryResultList.dividerHeight = 2
threadQueue.clear()
var thread=Thread(Runnable {
MapManager.getInstance().QueryFeatureByAttrubute(tarLyr, queryString, object : FeatureQueryResultCallBack {
override fun callback(res: FeatureQueryResultClass) {
var hashMap=HashMap<String,Any>()
hashMap[tarLyr.name] = res
var msg =Message()
msg.arg1=1
msg.obj= hashMap
handlerQuery.sendMessage(msg)
}
})
})
thread.name=tarLyr.name
threadQueue.add(thread)
thread.start()
}
A/art: art/runtime/indirect_reference_table.cc:138] JNI ERROR (app bug): weak global reference table overflow (max=51200)
art/runtime/indirect_reference_table.cc:138] weak global reference table dump:
art/runtime/indirect_reference_table.cc:138] Last 10 entries (of 51200):
art/runtime/indirect_reference_table.cc:138] 51199: 0x13e88940 com.esri.arcgisruntime.internal.jni.CoreArcGISFeature
art/runtime/indirect_reference_table.cc:138] 51198: 0x13e88940 com.esri.arcgisruntime.internal.jni.CoreArcGISFeature
art/runtime/indirect_reference_table.cc:138] 51197: 0x13e88900 com.esri.arcgisruntime.internal.jni.CoreArcGISFeature
art/runtime/indirect_reference_table.cc:138] 51196: 0x13e88900 com.esri.arcgisruntime.internal.jni.CoreArcGISFeature
art/runtime/indirect_reference_table.cc:138] 51195: 0x13e88900 com.esri.arcgisruntime.internal.jni.CoreArcGISFeature
art/runtime/indirect_reference_table.cc:138] 51194: 0x13e888c0 com.esri.arcgisruntime.internal.jni.CoreArcGISFeature
art/runtime/indirect_reference_table.cc:138] 51193: 0x13e888c0 com.esri.arcgisruntime.internal.jni.CoreArcGISFeature
art/runtime/indirect_reference_table.cc:138] 51192: 0x13e888c0 com.esri.arcgisruntime.internal.jni.CoreArcGISFeature
art/runtime/indirect_reference_table.cc:138] 51191: 0x13e88880 com.esri.arcgisruntime.internal.jni.CoreArcGISFeature
art/runtime/indirect_reference_table.cc:138] 51190: 0x13e88880 com.esri.arcgisruntime.internal.jni.CoreArcGISFeature
art/runtime/indirect_reference_table.cc:138] Summary:
art/runtime/indirect_reference_table.cc:138] 17 of com.esri.arcgisruntime.internal.jni.CoreVector (17 unique instances)
art/runtime/indirect_reference_table.cc:138] 3 of com.esri.arcgisruntime.internal.jni.CorePlatformHelpersProvider (1 unique instances)
art/runtime/indirect_reference_table.cc:138] 2 of com.esri.arcgisruntime.internal.jni.CoreTask (2 unique instances)
art/runtime/indirect_reference_table.cc:138] 18 of com.esri.arcgisruntime.internal.jni.CoreMapView (2 unique instances)
art/runtime/indirect_reference_table.cc:138] 2 of android.opengl.GLSurfaceView$GLThread (2 unique instances)
art/runtime/indirect_reference_table.cc:138] 2 of android.opengl.GLSurfaceView (2 unique instances)
art/runtime/indirect_reference_table.cc:138] 4 of com.esri.arcgisruntime.internal.jni.CoreArrayObservable (2 unique instances)
art/runtime/indirect_reference_table.cc:138] 8 of com.esri.arcgisruntime.internal.jni.CoreMap (2 unique instances)
art/runtime/indirect_reference_table.cc:138] 6 of com.esri.arcgisruntime.internal.jni.CoreBasemap (2 unique instances)
art/runtime/indirect_reference_table.cc:138] 6 of com.esri.arcgisruntime.internal.jni.CoreArcGISTiledLayer (2 unique instances)
art/runtime/indirect_reference_table.cc:138] 24 of com.esri.arcgisruntime.internal.jni.CoreShapefileFeatureTable (8 unique instances)
art/runtime/indirect_reference_table.cc:138] 112 of com.esri.arcgisruntime.internal.jni.CoreFeatureLayer (28 unique instances)
art/runtime/indirect_reference_table.cc:138] 3 of com.esri.arcgisruntime.internal.jni.CoreLocationDisplay (1 unique instances)
art/runtime/indirect_reference_table.cc:138] 4 of com.esri.arcgisruntime.internal.jni.CoreGeodatabase (1 unique instances)
art/runtime/indirect_reference_table.cc:138] 15 of com.esri.arcgisruntime.internal.jni.CorePictureMarkerSymbol (5 unique instances)
art/runtime/indirect_reference_table.cc:138] 42392 of com.esri.arcgisruntime.internal.jni.CoreArcGISFeature (14131 unique instances)
art/runtime/indirect_reference_table.cc:138] 2 of com.esri.arcgisruntime.internal.jni.CoreLocationDataSource (1 unique instances)
art/runtime/indirect_reference_table.cc:138] 60 of com.esri.arcgisruntime.internal.jni.CoreGeodatabaseFeatureTable (20 unique instances)
art/runtime/indirect_reference_table.cc:138] 1 of java.lang.BootClassLoader
art/runtime/indirect_reference_table.cc:138] 13 of java.lang.Thread (13 unique instances)
art/runtime/indirect_reference_table.cc:138] 6579 of java.lang.Class (6578 unique instances)
art/runtime/indirect_reference_table.cc:138] 1 of byte[] (8280 elements)
art/runtime/indirect_reference_table.cc:138] 4 of byte[] (15876 elements) (4 unique instances)
art/runtime/indirect_reference_table.cc:138] 1 of byte[] (18144 elements)
art/runtime/indirect_reference_table.cc:138] 1 of byte[] (18408 elements)
art/runtime/indirect_reference_table.cc:138] 2 of byte[] (20164 elements) (2 unique instances)
art/runtime/indirect_reference_table.cc:138] 5 of byte[] (20736 elements) (5 unique instances)
art/runtime/indirect_reference_table.cc:138] 1 of byte[] (46332 elements)
art/runtime/indirect_reference_table.cc:138] 1 of byte[] (82944 elements)
art/runtime/indirect_reference_table.cc:138] 1 of byte[] (1048576 elements)
art/runtime/indirect_reference_table.cc:138] 1 of java.lang.ThreadGroup
art/runtime/indirect_reference_table.cc:138] 28 of java.lang.DexCache (28 unique instances)
art/runtime/indirect_reference_table.cc:138] 10 of dalvik.system.PathClassLoader (2 unique instances)
art/runtime/indirect_reference_table.cc:138] 188 of android.view.RenderNode (188 unique instances)
art/runtime/indirect_reference_table.cc:138]
A/art: art/runtime/runtime.cc:408] Runtime aborting...
art/runtime/runtime.cc:408] Aborting thread:
A/art: art/runtime/runtime.cc:408] "RTC thread" prio=10 tid=18 Runnable
art/runtime/runtime.cc:408] | group="" sCount=0 dsCount=0 obj=0x13114700 self=0xb4d8b700
art/runtime/runtime.cc:408] | sysTid=14043 nice=-10 cgrp=default sched=0/0 handle=0xbbb7f920
art/runtime/runtime.cc:408] | state=R schedstat=( 12419184995 157393886 1593 ) utm=1214 stm=27 core=0 HZ=100
art/runtime/runtime.cc:408] | stack=0xbba83000-0xbba85000 stackSize=1014KB
art/runtime/runtime.cc:408] | held mutexes= "abort lock" "JNI weak global reference table lock" "mutator lock"(shared held)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.jni.CoreArcGISFeature.nativeSetDoneLoadingCallback(Native method)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.jni.CoreArcGISFeature.a(SourceFile:261)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.g.c.<init>(SourceFile:120)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.data.ArcGISFeature.<init>(SourceFile:103)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.data.ArcGISFeature.createFromInternal(SourceFile:90)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.p.i.a(SourceFile:2612)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.p.q.next(SourceFile:79)
art/runtime/runtime.cc:408] at com.yjdgis.nrap.workspace.MapManager$QueryFeatureByAttrubute$1.run(MapManager.kt:1096)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.b.g.b(SourceFile:45)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.b.e.a(SourceFile:115)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.b.b.b(SourceFile:206)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.b.b.a(SourceFile:46)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.b.b$1.a(SourceFile:53)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.jni.CoreTask.onTaskCompleted(SourceFile:149)
art/runtime/runtime.cc:408] Dumping all threads without appropriate locks held: thread list lock
art/runtime/runtime.cc:408] All threads:
art/runtime/runtime.cc:408] DALVIK THREADS (21):
art/runtime/runtime.cc:408] "RTC thread" prio=10 tid=18 Runnable
art/runtime/runtime.cc:408] | group="" sCount=0 dsCount=0 obj=0x13114700 self=0xb4d8b700
art/runtime/runtime.cc:408] | sysTid=14043 nice=-10 cgrp=default sched=0/0 handle=0xbbb7f920
art/runtime/runtime.cc:408] | state=R schedstat=( 12458152911 158022689 1603 ) utm=1216 stm=29 core=0 HZ=100
art/runtime/runtime.cc:408] | stack=0xbba83000-0xbba85000 stackSize=1014KB
art/runtime/runtime.cc:408] | held mutexes= "abort lock" "JNI weak global reference table lock" "mutator lock"(shared held)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.jni.CoreArcGISFeature.nativeSetDoneLoadingCallback(Native method)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.jni.CoreArcGISFeature.a(SourceFile:261)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.g.c.<init>(SourceFile:120)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.data.ArcGISFeature.<init>(SourceFile:103)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.data.ArcGISFeature.createFromInternal(SourceFile:90)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.p.i.a(SourceFile:2612)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.p.q.next(SourceFile:79)
art/runtime/runtime.cc:408] at com.yjdgis.nrap.workspace.MapManager$QueryFeatureByAttrubute$1.run(MapManager.kt:1096)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.b.g.b(SourceFile:45)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.b.e.a(SourceFile:115)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.b.b.b(SourceFile:206)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.b.b.a(SourceFile:46)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.b.b$1.a(SourceFile:53)
art/runtime/runtime.cc:408] at com.esri.arcgisruntime.internal.jni.CoreTask.onTaskCompleted(SourceFile:149)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "main" prio=10 tid=1 Native
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x75e186e8 self=0xe9284f00
art/runtime/runtime.cc:408] | sysTid=13851 nice=-10 cgrp=default sched=0/0 handle=0xec0bb534
art/runtime/runtime.cc:408] | state=S schedstat=( 32035665377 3501051559 36399 ) utm=3005 stm=198 core=6 HZ=100
art/runtime/runtime.cc:408] | stack=0xff5ff000-0xff601000 stackSize=8MB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] at android.view.ThreadedRenderer.nSyncAndDrawFrame(Native method)
art/runtime/runtime.cc:408] at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:818)
art/runtime/runtime.cc:408] at android.view.ViewRootImpl.draw(ViewRootImpl.java:3000)
art/runtime/runtime.cc:408] at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2794)
art/runtime/runtime.cc:408] at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2382)
art/runtime/runtime.cc:408] at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1372)
art/runtime/runtime.cc:408] at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6782)
art/runtime/runtime.cc:408] at android.view.Choreographer$CallbackRecord.run(Choreographer.java:933)
art/runtime/runtime.cc:408] at android.view.Choreographer.doCallbacks(Choreographer.java:742)
art/runtime/runtime.cc:408] at android.view.Choreographer.doFrame(Choreographer.java:674)
art/runtime/runtime.cc:408] at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:919)
art/runtime/runtime.cc:408] at android.os.Handler.handleCallback(Handler.java:761)
art/runtime/runtime.cc:408] at android.os.Handler.dispatchMessage(Handler.java:98)
art/runtime/runtime.cc:408] at android.os.Looper.loop(Looper.java:156)
art/runtime/runtime.cc:408] at android.app.ActivityThread.main(ActivityThread.java:6623)
art/runtime/runtime.cc:408] at java.lang.reflect.Method.invoke!(Native method)
art/runtime/runtime.cc:408] at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
art/runtime/runtime.cc:408] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "Jit thread pool worker thread 0" prio=10 tid=2 Native (still starting up)
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x0 self=0xe1911000
art/runtime/runtime.cc:408] | sysTid=13856 nice=9 cgrp=default sched=0/0 handle=0xe89a6920
art/runtime/runtime.cc:408] | state=S schedstat=( 4961700774 1823753810 4537 ) utm=453 stm=43 core=6 HZ=100
art/runtime/runtime.cc:408] | stack=0xe88a8000-0xe88aa000 stackSize=1022KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
A/art: art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] (no managed stack frames)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "Signal Catcher" prio=10 tid=3 WaitingInMainSignalCatcherLoop
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12cded30 self=0xdb786200
art/runtime/runtime.cc:408] | sysTid=13857 nice=0 cgrp=default sched=0/0 handle=0xe88a5920
art/runtime/runtime.cc:408] | state=S schedstat=( 523281 411093 4 ) utm=0 stm=0 core=5 HZ=100
art/runtime/runtime.cc:408] | stack=0xe87a9000-0xe87ab000 stackSize=1014KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: do_sigtimedwait+0xec/0x1d8
art/runtime/runtime.cc:408] kernel: compat_SyS_rt_sigtimedwait+0xb4/0x108
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] (no managed stack frames)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "JDWP" prio=10 tid=4 WaitingInMainDebuggerLoop
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12cdedc0 self=0xe1912400
art/runtime/runtime.cc:408] | sysTid=13858 nice=0 cgrp=default sched=0/0 handle=0xe87a6920
art/runtime/runtime.cc:408] | state=S schedstat=( 114318545 5922133 143 ) utm=8 stm=3 core=7 HZ=100
art/runtime/runtime.cc:408] | stack=0xe86aa000-0xe86ac000 stackSize=1014KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: poll_schedule_timeout+0x44/0x68
art/runtime/runtime.cc:408] kernel: do_select+0x4cc/0x524
art/runtime/runtime.cc:408] kernel: compat_core_sys_select+0x170/0x234
art/runtime/runtime.cc:408] kernel: compat_SyS_pselect6+0x1a0/0x24c
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] (no managed stack frames)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "ReferenceQueueDaemon" prio=10 tid=5 Waiting
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12cdee50 self=0xdb787600
art/runtime/runtime.cc:408] | sysTid=13859 nice=0 cgrp=default sched=0/0 handle=0xe86a7920
art/runtime/runtime.cc:408] | state=S schedstat=( 94169902 7875625 103 ) utm=9 stm=0 core=7 HZ=100
art/runtime/runtime.cc:408] | stack=0xe85a5000-0xe85a7000 stackSize=1038KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] at java.lang.Object.wait!(Native method)
art/runtime/runtime.cc:408] - waiting on <0x09513f3b> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
art/runtime/runtime.cc:408] at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:150)
art/runtime/runtime.cc:408] - locked <0x09513f3b> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
art/runtime/runtime.cc:408] at java.lang.Thread.run(Thread.java:776)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "FinalizerDaemon" prio=10 tid=6 Waiting
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12cdeee0 self=0xdb787b00
art/runtime/runtime.cc:408] | sysTid=13860 nice=0 cgrp=default sched=0/0 handle=0xe85a2920
art/runtime/runtime.cc:408] | state=S schedstat=( 396998011 33204800 288 ) utm=38 stm=1 core=6 HZ=100
art/runtime/runtime.cc:408] | stack=0xe84a0000-0xe84a2000 stackSize=1038KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] at java.lang.Object.wait!(Native method)
art/runtime/runtime.cc:408] - waiting on <0x01f43e22> (a java.lang.Object)
art/runtime/runtime.cc:408] at java.lang.Object.wait(Object.java:407)
art/runtime/runtime.cc:408] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
art/runtime/runtime.cc:408] - locked <0x01f43e22> (a java.lang.Object)
art/runtime/runtime.cc:408] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
art/runtime/runtime.cc:408] at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:204)
art/runtime/runtime.cc:408] at java.lang.Thread.run(Thread.java:776)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "FinalizerWatchdogDaemon" prio=10 tid=7 Sleeping
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12cdef70 self=0xe9285900
art/runtime/runtime.cc:408] | sysTid=13861 nice=0 cgrp=default sched=0/0 handle=0xe849d920
art/runtime/runtime.cc:408] | state=S schedstat=( 2107760 5383699 22 ) utm=0 stm=0 core=7 HZ=100
art/runtime/runtime.cc:408] | stack=0xe839b000-0xe839d000 stackSize=1038KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] at java.lang.Thread.sleep!(Native method)
art/runtime/runtime.cc:408] - sleeping on <0x003900b3> (a java.lang.Object)
art/runtime/runtime.cc:408] at java.lang.Thread.sleep(Thread.java:379)
A/art: art/runtime/runtime.cc:408] - locked <0x003900b3> (a java.lang.Object)
art/runtime/runtime.cc:408] at java.lang.Thread.sleep(Thread.java:321)
art/runtime/runtime.cc:408] at java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor(Daemons.java:314)
art/runtime/runtime.cc:408] at java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:336)
art/runtime/runtime.cc:408] at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:253)
art/runtime/runtime.cc:408] at java.lang.Thread.run(Thread.java:776)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "HeapTaskDaemon" prio=10 tid=8 Blocked
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12ce50d0 self=0xe9285e00
art/runtime/runtime.cc:408] | sysTid=13862 nice=0 cgrp=default sched=0/0 handle=0xe8398920
art/runtime/runtime.cc:408] | state=S schedstat=( 2099590424 33708383 283 ) utm=202 stm=7 core=5 HZ=100
art/runtime/runtime.cc:408] | stack=0xe8296000-0xe8298000 stackSize=1038KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] at dalvik.system.VMRuntime.runHeapTasks(Native method)
art/runtime/runtime.cc:408] - waiting to lock an unknown object
art/runtime/runtime.cc:408] at java.lang.Daemons$HeapTaskDaemon.run(Daemons.java:433)
art/runtime/runtime.cc:408] at java.lang.Thread.run(Thread.java:776)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "Binder:13851_1" prio=10 tid=9 Native
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12ce51f0 self=0xe9286800
art/runtime/runtime.cc:408] | sysTid=13863 nice=0 cgrp=default sched=0/0 handle=0xe8195920
art/runtime/runtime.cc:408] | state=S schedstat=( 760178137 68173496 3483 ) utm=28 stm=48 core=0 HZ=100
art/runtime/runtime.cc:408] | stack=0xe8099000-0xe809b000 stackSize=1014KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: binder_thread_read+0x1190/0x13f0
art/runtime/runtime.cc:408] kernel: binder_ioctl+0x53c/0xbcc
art/runtime/runtime.cc:408] kernel: compat_SyS_ioctl+0x120/0xf9c
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] (no managed stack frames)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "Binder:13851_2" prio=10 tid=10 Native
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12ce5280 self=0xe1913800
art/runtime/runtime.cc:408] | sysTid=13864 nice=0 cgrp=default sched=0/0 handle=0xe8094920
art/runtime/runtime.cc:408] | state=S schedstat=( 758250758 101942118 3486 ) utm=22 stm=53 core=0 HZ=100
art/runtime/runtime.cc:408] | stack=0xe7f98000-0xe7f9a000 stackSize=1014KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: binder_thread_read+0x1190/0x13f0
art/runtime/runtime.cc:408] kernel: binder_ioctl+0x53c/0xbcc
art/runtime/runtime.cc:408] kernel: compat_SyS_ioctl+0x120/0xf9c
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] (no managed stack frames)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "Profile Saver" prio=10 tid=11 Native
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12ce54c0 self=0xe00e0f00
art/runtime/runtime.cc:408] | sysTid=13886 nice=-10 cgrp=default sched=0/0 handle=0xe7e5f920
art/runtime/runtime.cc:408] | state=S schedstat=( 44733485 8199009 58 ) utm=3 stm=1 core=5 HZ=100
art/runtime/runtime.cc:408] | stack=0xe7d63000-0xe7d65000 stackSize=1014KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] (no managed stack frames)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "RenderThread" prio=10 tid=12 Native
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12dd4dc0 self=0xe1912900
art/runtime/runtime.cc:408] | sysTid=13889 nice=-10 cgrp=default sched=0/0 handle=0xe1aff920
art/runtime/runtime.cc:408] | state=S schedstat=( 54067875662 10162045101 68092 ) utm=4431 stm=975 core=7 HZ=100
art/runtime/runtime.cc:408] | stack=0xe1a03000-0xe1a05000 stackSize=1014KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] (no managed stack frames)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "Binder:13851_3" prio=10 tid=13 Native
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12c62c10 self=0xe176a000
art/runtime/runtime.cc:408] | sysTid=13969 nice=0 cgrp=default sched=0/0 handle=0xc637f920
art/runtime/runtime.cc:408] | state=S schedstat=( 766927165 64729747 3474 ) utm=27 stm=49 core=3 HZ=100
art/runtime/runtime.cc:408] | stack=0xc6283000-0xc6285000 stackSize=1014KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: binder_thread_read+0x1190/0x13f0
art/runtime/runtime.cc:408] kernel: binder_ioctl+0x53c/0xbcc
art/runtime/runtime.cc:408] kernel: compat_SyS_ioctl+0x120/0xf9c
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] (no managed stack frames)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "hwuiTask2" prio=10 tid=16 Native
A/art: art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12d3a280 self=0xc4777800
art/runtime/runtime.cc:408] | sysTid=13977 nice=-2 cgrp=default sched=0/0 handle=0xc2fd4920
art/runtime/runtime.cc:408] | state=S schedstat=( 882310871 775575973 4810 ) utm=66 stm=22 core=7 HZ=100
art/runtime/runtime.cc:408] | stack=0xc2ed8000-0xc2eda000 stackSize=1014KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] (no managed stack frames)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "hwuiTask1" prio=10 tid=17 Native
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12d3a310 self=0xe176b400
art/runtime/runtime.cc:408] | sysTid=13976 nice=-2 cgrp=default sched=0/0 handle=0xc30d3920
art/runtime/runtime.cc:408] | state=S schedstat=( 3581283184 1852550810 23110 ) utm=322 stm=36 core=4 HZ=100
art/runtime/runtime.cc:408] | stack=0xc2fd7000-0xc2fd9000 stackSize=1014KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] (no managed stack frames)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "GLThread 960" prio=10 tid=20 Waiting
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x12f29500 self=0xc47de500
art/runtime/runtime.cc:408] | sysTid=14010 nice=0 cgrp=default sched=0/0 handle=0xc5a87920
art/runtime/runtime.cc:408] | state=S schedstat=( 199615966 368979097 2444 ) utm=16 stm=4 core=5 HZ=100
art/runtime/runtime.cc:408] | stack=0xc5985000-0xc5987000 stackSize=1038KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] at java.lang.Object.wait!(Native method)
art/runtime/runtime.cc:408] - waiting on <0x03ee0670> (a android.opengl.GLSurfaceView$GLThreadManager)
art/runtime/runtime.cc:408] at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1502)
art/runtime/runtime.cc:408] - locked <0x03ee0670> (a android.opengl.GLSurfaceView$GLThreadManager)
art/runtime/runtime.cc:408] at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1267)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "pool-1-thread-1" prio=10 tid=22 Waiting
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x131f6700 self=0xc18e8d00
art/runtime/runtime.cc:408] | sysTid=14020 nice=0 cgrp=default sched=0/0 handle=0xc17ff920
art/runtime/runtime.cc:408] | state=S schedstat=( 3942030 1736094 9 ) utm=0 stm=0 core=6 HZ=100
art/runtime/runtime.cc:408] | stack=0xc16fd000-0xc16ff000 stackSize=1038KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] at java.lang.Object.wait!(Native method)
art/runtime/runtime.cc:408] - waiting on <0x0cef0de9> (a java.lang.Object)
art/runtime/runtime.cc:408] at java.lang.Thread.parkFor$(Thread.java:2142)
art/runtime/runtime.cc:408] - locked <0x0cef0de9> (a java.lang.Object)
art/runtime/runtime.cc:408] at sun.misc.Unsafe.park(Unsafe.java:325)
art/runtime/runtime.cc:408] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:161)
art/runtime/runtime.cc:408] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2035)
art/runtime/runtime.cc:408] at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
art/runtime/runtime.cc:408] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1058)
art/runtime/runtime.cc:408] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
art/runtime/runtime.cc:408] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
art/runtime/runtime.cc:408] at java.lang.Thread.run(Thread.java:776)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "GLThread 1007" prio=10 tid=19 Waiting
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x13214660 self=0xc47de000
art/runtime/runtime.cc:408] | sysTid=14026 nice=0 cgrp=default sched=0/0 handle=0xc5d3b920
art/runtime/runtime.cc:408] | state=S schedstat=( 18821164653 1532305351 10712 ) utm=1679 stm=203 core=7 HZ=100
art/runtime/runtime.cc:408] | stack=0xc5c39000-0xc5c3b000 stackSize=1038KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] at java.lang.Object.wait!(Native method)
art/runtime/runtime.cc:408] - waiting on <0x03ee0670> (a android.opengl.GLSurfaceView$GLThreadManager)
art/runtime/runtime.cc:408] at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1502)
art/runtime/runtime.cc:408] - locked <0x03ee0670> (a android.opengl.GLSurfaceView$GLThreadManager)
art/runtime/runtime.cc:408] at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1267)
art/runtime/runtime.cc:408]
art/runtime/runtime.cc:408] "AsyncTask #5" prio=10 tid=14 TimedWaiting
art/runtime/runtime.cc:408] | group="" sCount=1 dsCount=0 obj=0x131141f0 self=0xb4d8c600
art/runtime/runtime.cc:408] | sysTid=14187 nice=0 cgrp=default sched=0/0 handle=0xc0f6a920
A/art: art/runtime/runtime.cc:408] | state=S schedstat=( 1169477 1179116 10 ) utm=0 stm=0 core=3 HZ=100
art/runtime/runtime.cc:408] | stack=0xc0e68000-0xc0e6a000 stackSize=1038KB
art/runtime/runtime.cc:408] | held mutexes=
art/runtime/runtime.cc:408] kernel: __switch_to+0x70/0x7c
art/runtime/runtime.cc:408] kernel: futex_wait_queue_me+0xe4/0x144
art/runtime/runtime.cc:408] kernel: futex_wait+0xfc/0x208
art/runtime/runtime.cc:408] kernel: do_futex+0xdc/0x8b8
art/runtime/runtime.cc:408] kernel: compat_SyS_futex+0xdc/0x168
art/runtime/runtime.cc:408] kernel: el0_svc_naked+0x24/0x28
art/runtime/runtime.cc:408] at java.lang.Object.wait!(Native method)
art/runtime/runtime.cc:408] - waiting on <0x033c1a6e> (a java.lang.Object)
art/runtime/runtime.cc:408] at java.lang.Thread.parkFor$(Thread.java:2142)
art/runtime/runtime.cc:408] - locked <0x033c1a6e> (a java.lang.Object)
art/runtime/runtime.cc:408] at sun.misc.Unsafe.park(Unsafe.java:325)
art/runtime/runtime.cc:408] at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:201)
art/runtime/runtime.cc:408] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2077)
--------- beginning of crash
A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 14043 (RTC thread)
Hi Xinfei,
从程序看你的应用一次就查询feature layer 中所有的记录并遍历它们。我们sdk的ArcGISFeature实行数个事件包括DoneLoading 和 LoadStatusChanged,每个事件都需要一个weak global reference以便之后可以调用它的Callback。由于Android系统只允许在同一时间生成一定数量的weak global reference,当一次查询多个记录比如30000个就会超过系统限制的数量,导致溢出,从而崩溃。
我们建议你一次不要查询过多的记录,你也可以尝试调用ArcGISFeature.close() 去释放你不需要的features占用的资源。关于ArcGISFeature.close() 可以参见这里
Based on your code snippet, you queried all the features in your feature layer which contains about 30000 features in a single queryFeaturesAsync call then iterated through the query result. In our Runtime for Android SDK, an ArcGISFeature implements several events such as DoneLoading and LoadStatusChanged. Each of these events requires the allocation of a weak global reference object to allow a callback to be invoked later. As Android system only allows for a limited number of weak global references to be allocated at a time, querying a large amount of features, e.g. 30000, with a single queryFeatures call will exceed the limit and end up with the weak global reference table overflow.
The recommendation would be to limit the number of features queried and held in memory at a time. One more thing you can try is to call ArcGISFeature.close() on the features you don’t need to release the underlying resources. For more info about this method can be found at here.