記憶體占用大小有如下規律 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 total和private 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...