Я использую команду adb shell dumpsys meminfo myAppPackageName
, чтобы просмотреть счетчик операций (активность: 4). После нескольких повторений ввода и выхода из одной и той же активности я обнаружил, что счетчик операций продолжает работать.
$ adb shell dumpsys meminfo $(adb shell ps | grep "myPackageName$" | awk '{print $2}')
Applications Memory Usage (in Kilobytes):
Uptime: 1468561523 Realtime: 2516671206
** MEMINFO in pid 29345 [com.xxxxxx] **
Pss Private Private SwapPss Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 155895 155508 328 36610 233728 219817 13910
Dalvik Heap 15674 15584 56 276 23242 11621 11621
Dalvik Other 9645 9632 12 52
Stack 136 136 0 16
Ashmem 182 4 0 0
Gfx dev 13168 13168 0 0
Other dev 37 4 32 0
.so mmap 34610 768 29120 279
.jar mmap 4 0 4 0
.apk mmap 861 0 204 0
.ttf mmap 205 0 140 0
.dex mmap 21891 16768 2416 17640
.oat mmap 408 0 64 0
.art mmap 5143 4288 24 853
Other mmap 6798 16 6352 0
EGL mtrack 43292 43292 0 0
GL mtrack 24096 24096 0 0
Unknown 4902 4900 0 1978
TOTAL 394651 288164 38752 57704 256970 231438 25531
App Summary
Pss(KB)
------
Java Heap: 19896
Native Heap: 155508
Code: 49484
Stack: 136
Graphics: 80556
Private Other: 21336
System: 67735
TOTAL: 394651 TOTAL SWAP PSS: 57704
Objects
Views: 1222 ViewRootImpl: 1
AppContexts: 9 Activities: 4
Assets: 3 AssetManagers: 0
Local Binders: 74 Proxy Binders: 46
Parcel memory: 62 Parcel count: 234
Death Recipients: 0 OpenSSL Sockets: 1
Кажется, что есть проблема утечки памяти. Поэтому я сбросил память hprof и использовал MAT для ее анализа. Результат показан ниже: Sun.mis c .Cleaner - это PhantomReference, я не думаю, что он должен блокировать мою деятельность повторно, но на самом деле это так. .. почему?