2013-10-24 44 views
2

当我启动并退出我的应用程序几次时,其RAM使用率增加超过500 MB。当我检查内存转储使用adb shell dumpsys meminfo我检查未知pss value是问题的原因。什么是大pss值的原因,以及如何降低pss值。Android应用程序使用大量内存的原因以及如何减少

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

应用程序dalvik堆大小不会改变很多本地堆大小随着使用而增加。 – anujprashar

回答

4

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

+0

如何获得本地堆转储并分析它? –

+0

@AnkitBansal这个链接http://bricolsoftconsulting.com/how-to-enable-native-heap-tracking-in-ddms/帮助我很多。 – anujprashar

+0

@anuj字体信息帮了我很多......搜索了几个月后,我终于找到了答案。修改自定义TextView以使用全局静态创建的字体。现在有20Mb以前的300Mb内存大小。 – harshal

相关问题