属性查询内存溢出异常

664
1
03-03-2020 07:00 PM
jiangxinfei
New Contributor

最近在使用Runtime for Android的时候报了个错误,不知道如何解决。

软件环境:Android 6.0ArcGIS 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)

0 Kudos
1 Reply
XuemingWu
Esri Contributor

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.

0 Kudos