当我多次启动并退出我的应用时,其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
答案 0 :(得分:5)
我发现了高RAM使用率的原因。当我分析应用程序的本机堆转储时,我知道库libharfbuzz.so
的实例占用了大量空间,并且该库用于显示字体,所以当我检查代码时,有很多{{1}的实例在代码中创建了多个地方。由于TypeFace在本机内存中分配,它使本机堆大小很大,这就是RAM使用率更高的原因。我删除了这些实例并创建了单个TypeFace
实例并在我的应用程序中使用它,并且RAM使用率降低了。