【android學習】查看應用應用內存

查看內存方法:

使用dumpsys meminfo方法查看

在adb shell條件下面使用如下指令查看內存使用情況

dumpsys meminfo com.incall.autofly.launcher

 將會得到如下顯示列表

                   Pss  Private  Private  SwapPss     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap    49834    49760        0        0    67584    57128    10455
  Dalvik Heap     2617     2560        0        0     6605     3303     3302
 Dalvik Other     1308     1308        0        0
        Stack       88       88        0        0
       Ashmem        2        0        0        0
    Other dev       56        0       56        0
     .so mmap     8045      396     1320        0
    .apk mmap      531        0       40        0
    .ttf mmap      159        0       96        0
    .dex mmap     8756        4     7552        0
    .oat mmap     1856        0        0        0
    .art mmap     1737     1192        4        0
   Other mmap     2215        4      944        0
   EGL mtrack     6774     6774        0        0
    GL mtrack    35304    35304        0        0
      Unknown     8541     8520        0        0
        TOTAL   127823   105910    10012        0    74189    60431    13757

 我們這裏做內存優化,主要關注Native Heap  Dalvik Heap  .so mmap  

  • Native/Dalvik 的 Heap 信息 分別給出的是JNI層和Java層的內存分配情況,如果發現這個值一直增長,則代表程序可能出現了內存泄漏
  • so mmap 這裏是應用的so文件佔用的內存

 

在做內存優化時候,我們主要關注的是整個apk佔用的內存大小,可以使用如下方法過濾

dumpsys meminfo com.incall.autofly.launcher | grep TOTAL:

這個值就是你的應用真正佔據的內存大小,獲得的佔用內存大小如下: 

TOTAL:   127823

 

使用adb shell procrank

  PID       Vss      Rss      Pss      Uss  cmdline
  797  4786328K  269524K  113355K   96140K  system_server
 3735  5307036K  215232K   88778K   77920K  com.incall.autofly.launcher
  •  VSS- Virtual Set Size 虛擬耗用內存(包含共享庫佔用的內存)
  •  RSS- Resident Set Size 實際使用物理內存(包含共享庫佔用的內存)
  •  PSS- Proportional Set Size 實際使用的物理內存(比例分配共享庫佔用的內存)
  •  USS- Unique Set Size 進程獨自佔用的物理內存(不包含共享庫佔用的內存)

 

  1. VSS : Virtual Set Size 虛擬耗用內存(包含共享庫佔用的內存),即單個進程全部可訪問的地址空間,這個大小包括了進程已經申請但尚未使用的內存空間。對於確定單個進程實際內存使用大小,VSS用處不大
  2. RSS : Resident Set Size 實際使用物理內存(包含共享庫佔用的內存),即單個進程實際佔用的內存大小,RSS不太準確的地方在於它包括該進程所使用共享庫全部內存大小。對於一個共享庫,可能被多個進程使用,實際該共享庫只會被裝入內存一次。
  3. PSS : Proportional Set Size 實際使用的物理內存(比例分配共享庫佔用的內存)PSS相對於RSS計算共享庫內存大小是按比例的。N個進程共享,該庫對PSS大小的貢獻只有1/N。
  4. USS : Unique Set Size 進程獨自佔用的物理內存(不包含共享庫佔用的內存)即單個進程私有的內存大小,即該進程獨佔的內存部分。USS揭示了運行一個特定進程在的真實內存增量大小。如果進程終止,USS就是實際被返還給系統的內存大小

    所以,一般情況下有:VSS >= RSS >= PSS >= USS。

 

參考:https://blog.csdn.net/qq_31588719/article/details/89476050

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章