当我启动并退出我的应用程序时,它的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用于显示字体,所以当我检查代码时,代码中有很多地方出现了TypeFacecretaed的实例。由于字体是在本机内存中分配的,这使得本机堆的大小变大,这就是RAM使用率增加的原因。我删除了这些实例,创建了一个TypeFace实例,并在我的应用程序中使用它,ram的使用率降低了。

10-08 02:31