1、官方有篇文章,详细的写了,可以通过哪些工具查看内存占用的情况
https://developer.android.com/studio/profile/investigate-ram.html
2、较常用的 adb 命令,adb shell dumpsys meminfo <packageName>
- Here is an older dumpsys on Dalvik of the gmail app:
- ** MEMINFO in pid 9953 [com.google.android.gm] **
- Pss Pss Shared Private Shared Private Heap Heap Heap
- Total Clean Dirty Dirty Clean Clean Size Alloc Free
- ------ ------ ------ ------ ------ ------ ------ ------ ------
- Native Heap 0 0 0 0 0 0 7800 7637(6) 126
- Dalvik Heap 5110(3) 0 4136 4988(3) 0 0 9168 8958(6) 210
- Dalvik Other 2850 0 2684 2772 0 0
- Stack 36 0 8 36 0 0
- Cursor 136 0 0 136 0 0
- Ashmem 12 0 28 0 0 0
- Other dev 380 0 24 376 0 4
- .so mmap 5443(5) 1996 2584 2664(5) 5788 1996(5)
- .apk mmap 235 32 0 0 1252 32
- .ttf mmap 36 12 0 0 88 12
- .dex mmap 3019(5) 2148 0 0 8936 2148(5)
- Other mmap 107 0 8 8 324 68
- Unknown 6994(4) 0 252 6992(4) 0 0
- TOTAL 24358(1) 4188 9724 17972(2)16388 4260(2)16968 16595 336
- Objects
- Views: 426 ViewRootImpl: 3(8)
- AppContexts: 6(7) Activities: 2(7)
- Assets: 2 AssetManagers: 2
- Local Binders: 64 Proxy Binders: 34
- Death Recipients: 0
- OpenSSL Sockets: 1
- SQL
- MEMORY_USED: 1739
- PAGECACHE_OVERFLOW: 1164 MALLOC_SIZE: 62
看上面的数据可以简单排查出你app中的一些问题,比如看当前Activity数量,如果显示的数量和你预期的数量不一致,可能就已经有activity泄露了,然后你可以用工具 mat 来排查具体是什么原因引起的activity内存泄漏,具体可以看这篇:
《【内存优化】内存泄漏 之 MAT 工具的使用 》