当我启动并退出我的应用程序时,它的RAM
使用量增加了几倍,达到500 MB以上。当我使用adb shell dumpsys meminfo
检查内存转储时,我检查了未知pss value
是问题的原因。pss值大的原因是什么?如何降低pss值?
Shared Private Heap Heap Heap
Pss Dirty Dirty Size Alloc Free
------ ------ ------ ------ ------ ------
Native 0 0 0 534460 531827 1604
Dalvik 51013 17868 50664 90480 82266 8214
Cursor 0 0 0
Ashmem 0 0 0
Other dev 14292 52 14288
.so mmap 3810 2320 1720
.jar mmap 0 0 0
.apk mmap 1305 0 0
.ttf mmap 0 0 0
.dex mmap 2960 0 0
Other mmap 1738 440 236
Unknown 504718 296 384284
TOTAL 579836 20976 451192 624940 614093 9818
最佳答案
我找到了内存使用率高的原因。当我分析应用程序的本机堆转储时,我知道librarylibharfbuzz.so
的实例占用了很大的空间,而library用于显示字体,所以当我检查代码时,代码中有很多地方出现了TypeFace
cretaed的实例。由于字体是在本机内存中分配的,这使得本机堆的大小变大,这就是RAM使用率增加的原因。我删除了这些实例,创建了一个TypeFace
实例,并在我的应用程序中使用它,ram的使用率降低了。