記憶體耗用分析 VSS RSS PSS USS

2021-10-08 15:32:14 字數 1855 閱讀 9121

記憶體占用大小有如下規律 vss >= rss >= pss >= uss

vss - virtual set size (用處不大)虛擬耗用記憶體(包含共享庫占用的記憶體)

rss - resident set size (用處不大) 實際使用物理記憶體(包含共享庫占用的記憶體)

pss - proportional set size (僅供參考)實際使用的物理記憶體(比例分配共享庫占用的記憶體)

uss - unique set size (非常有用)程序獨自占用的物理記憶體(不包含共享庫占用的記憶體)

前兩個命令只能查到vss rss記憶體占用資訊

而後面兩個命令可以查出  pss uss記憶體占用.

dumpsys meminfo 可以查出native和dalvik分別占用多少記憶體

dumpsys 用來給出手機中所有應用程式的資訊,並且也會給出現在手機的狀態。

dumpsys [option]

meminfo 顯示記憶體資訊

cpuinfo 顯示cpu資訊

account 顯示accounts資訊

activity 顯示所有的activities的資訊

window 顯示鍵盤,視窗和它們的關係

wifi 顯示wifi資訊

首先了解兩個概念:

通常我們需要關注pss totalprivate dirty.

多執行緒的應用在android開發中是非常常見的,常用方法主要有:

繼承thread類

實現runnable介面

handler

asynctask

handlerthread

內部原理 = thread類 + handler類機制,即:

通過繼承thread類,快速地建立1個帶有looper物件的新工作執行緒

通過封裝handler類,快速建立handler & 與其他執行緒進行通訊

5. 使用步驟

handlerthread的本質:繼承thread類 & 封裝handler類

handlerthread的使用步驟分為5步

// 步驟1:建立handlerthread例項物件

// 傳入引數 = 執行緒名字,作用 = 標記該執行緒

handlerthread mhandlerthread = new handlerthread("handlerthread");

// 步驟2:啟動執行緒

mhandlerthread.start();

// 步驟3:建立工作執行緒handler & 複寫handlemessage()

// 作用:關聯handlerthread的looper物件、實現訊息處理操作 & 與其他執行緒進行通訊

// 注:訊息處理操作(handlermessage())的執行執行緒 = mhandlerthread所建立的工作執行緒中執行

handler workhandler = new handler( handlerthread.getlooper() )

});// 步驟4:使用工作執行緒handler向工作執行緒的訊息佇列傳送訊息

// 在工作執行緒中,當訊息迴圈時取出對應訊息 & 在工作執行緒執行相關操作

// a. 定義要傳送的訊息

message msg = message.obtain();

msg.what = 2; //訊息的標識

msg.obj = "b"; // 訊息的存放

// b. 通過handler傳送訊息到其繫結的訊息佇列

workhandler.sendmessage(msg);

// 步驟5:結束執行緒,即停止執行緒的訊息迴圈

mhandlerthread.quit();

記憶體耗用分析 VSS RSS PSS USS

一般來說記憶體占用大小有如下規律 vss rss pss uss 前兩個命令只能查到vss rss記憶體占用資訊 而後面兩個命令可以查出 pss uss記憶體占用.dumpsys meminfo 可以查出native和dalvik分別占用多少記憶體 dumpsys 用來給出手機中所有應用程式的資訊,...

解決PHP陣列記憶體耗用太多的問題

一般來說,php陣列的記憶體利用率只有 1 10,也就是說,乙個在c語言裡面100m 記憶體的陣列,在php裡面就要1g。特別是在php作為後台伺服器的系統中,經常會出現記憶體耗費太大的問題。因為這個是語言的問題,常規方案比較難以解決。下面是一種通過string 解決的方案。total 100000...

python 記憶體分析 python 記憶體分析

1 改原始碼重新編譯列印相關資訊 obmalloc.c 檔案中列印 maxarenas,值為當前環境分配 arena 個數 分配 arena 時並沒有馬上分配對應的pools,故對於每乙個 arena,nfreepools 和 ntotalpools 為分配pool的可用pool數和總pool數。i...