Android app大量使用RAM的原因以及如何减少

anu*_*har 2 android android-memory

当我多次启动和退出我的应用程序时,其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
Run Code Online (Sandbox Code Playgroud)

anu*_*har 5

我发现了高RAM使用率的原因.当我分析应用程序的本机堆转储时,我知道库的实例libharfbuzz.so占用了巨大的空间,并且该库用于显示字体,所以当我检查代码时,在代码的位置有很多实例的TypeFacecretaed.由于TypeFace在本机内存中分配,它使本机堆大小很大,这就是RAM使用率更高的原因.我删除了这些实例并创建了单个TypeFace实例并在我的应用程序中使用它,并且RAM使用率降低了.