2013-10-24 67 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

相關問題