記憶體分析與記憶體流失檢測,記憶體流失檢測
Android
查看所有進程記憶體佔用情況
(1)串連裝置,開啟USE偵錯模式
(2)開啟命令列,執行命令:adb shell procrank
欄位說明:
PID:進程id
VSS(Virtual Set Size): 虛擬耗用記憶體(包含共用庫佔用的記憶體)
RSS(Resident Set Size):實際使用實體記憶體(包含共用庫佔用的記憶體)
PSS(Proportional Set Size): 實際使用的實體記憶體(比例分配共用庫佔用的記憶體)
USS(Unique Set Size): 進程獨自佔用的實體記憶體(不包含共用庫佔用的記憶體)
cmdline:進程名稱
查看Heap資訊
1.開啟Eclipse的DDMS視窗,選擇需要查看的應用
2.點擊Update Heap
3.點擊Cause GC按鈕,觸發Java的記憶體回收機制,點擊後會在Heap視窗顯示該進程的堆資訊,並定時重新整理。
欄位說明:
Heap Size:堆記憶體總大小
Allocated:已使用的堆記憶體大小
Free:閒置堆記憶體大小
Used:已使用堆記憶體大小百分比
Objects:對象個數
相關文章:Android最佳效能實踐(二)——分析記憶體的使用方式
記憶體流失偵查工具(VLD)
工具
1:https://vld.codeplex.com/releases
2:http://pan.baidu.com/s/1gd7vQnD
安裝完成後,使用visual studio建立的項目,預設會包含vld的標頭檔目錄。
而且bin目錄下的運行庫已經自動添加到Path變數中。
我們需要做的只是在源碼中#include <vld.h>,一般在項目入口檔案中包含。
這裡,我手動製造了記憶體流失。在map.cpp的第10行和第12行。
程式支行結束後,檢測到動態分配的記憶體沒有delete或free,在輸出—調試視窗中會輸出其記憶體流失相關的資訊。
這裡提示在main.cpp第10行發生了記憶體流失,泄漏了8個位元組,點擊可直接定位到記憶體流失的那行代碼。Block後面的數字表面第幾處記憶體流失。