<lambda>null1package shark 2 3 object AndroidServices { 4 val HeapGraph.aliveAndroidServiceObjectIds: List<Long> 5 get() { 6 return context.getOrPut(AndroidServices::class.java.name) { 7 val activityThreadClass = findClassByName("android.app.ActivityThread")!! 8 val currentActivityThread = activityThreadClass 9 .readStaticField("sCurrentActivityThread")!! 10 .valueAsInstance!! 11 12 val mServices = currentActivityThread["android.app.ActivityThread", "mServices"]!! 13 .valueAsInstance!! 14 15 val servicesArray = mServices["android.util.ArrayMap", "mArray"]!!.valueAsObjectArray!! 16 17 servicesArray.readElements() 18 .filterIndexed { index, heapValue -> 19 // ArrayMap<IBinder, Service> 20 // even: key, odd: value 21 index % 2 == 1 22 && heapValue.isNonNullReference 23 } 24 .map { it.asNonNullObjectId!! } 25 .toList() 26 } 27 } 28 }