編輯:Android開發教程
Eclipse提供的一個內存分析工具。它是一個功能豐富的 JAVA 堆轉儲文件分析工具,可以幫助你發現內存漏洞和減少內存消耗。
android studio未集成該插件
需要你下載獨立版
android studio的DDMS可以生成hprof是什麼文件,不過需要進行一下格式轉化(.hprof文件從Dalvik格式轉換成J2SE HPROF格式),才可以導入MAT獨立版軟件。
heap dumps,中文翻譯,堆轉儲,快照。即堆內存某個時刻的情況。
heap dumps,它是更強大的內存分析工具,一個heap dump就是一個程序heap的快照,它保存為一種叫做HPROF的二進制格式。Dalvik用的也是類似的格式,但是不完全一樣,這裡是Java 的HPROF工具 。
程序運行內存對情況——程序運行堆內存分配情況快照(ddms可以得到,文件格式為hprof)——使用MAT分析該文件——判斷是否出現內存洩露——修改程序
Shallow size就是對象本身占用內存的大小,不包含其引用的對象。
常規對象(非數組)的Shallow size有其成員變量的數量和類型決定。
數組的shallow size有數組元素的類型(對象類型、基本類型)和數組長度決定
因為不像c++的對象本身可以存放大量內存,java的對象成員都是些引用。真正的內存都在堆上,看起來是一堆原生的byte[], char[], int[],所以我們如果只看對象本身的內存,那麼數量都很小。所以我們看到Histogram圖是以Shallow size進行排序的,排在第一位第二位的是byte,char 。
Retained Heap的概念,它表示如果一個對象被釋放掉,那會因為該對象的釋放而減少引用進而被釋放的所有的對象(包括被遞歸釋放的)所占用的heap大小。於是,如果一個對象的某個成員new了一大塊int數組,那這個int數組也可以計算到這個對象中。相對於shallow heap,Retained heap可以更精確的反映一個對象實際占用的大小(因為如果該對象釋放,retained heap都可以被釋放)。
計算較為復雜,涉及jvm垃圾回收機制:引用鏈。
GC發現通過任何reference chain(引用鏈)無法訪問某個對象的時候,該對象即被回收。名詞GC Roots正是分析這一過程的起點,例如JVM自己確保了對象的可到達性(那麼JVM就是GC Roots),所以GC Roots就是這樣在內存中保持對象可到達性的,一旦不可到達,即被回收。通常GC Roots是一個在current thread(當前線程)的call stack(調用棧)上的對象(例如方法參數和局部變量),或者是線程自身或者是system class loader(系統類加載器)加載的類以及native code(本地代碼)保留的活動對象。所以GC Roots是分析對象為何還存活於內存中的利器。
在Histogram和Domiantor Tree界面,可以選擇將結果用另一種Group的方式顯示(默認是Group by Object),切換到Group by package,可以更好地查看具體是哪個包裡的類占用內存大,也很容易定位到自己的應用程序。
在Histogram或者Domiantor Tree的某一個條目上,右鍵可以查看其GC Root Path:
URL:http://www.bianceng.cn/OS/extra/201608/50372.htm
FrameLayout就是屏幕上的一個“定位器”,可以使用它去顯示一個單一的視圖。被添加到FrameLayout上 的視圖views總是被固定在這
微軟已經對Android平台上的Outlook應用進行了升級,除了修復消費者反饋的大量BUG之外還對收件箱的功能進行了強化,為消費者提供未讀和已標記信息的篩選功能,此外還
上節已經在openfire服務器中建立了組,這節繼續看怎樣獲取好友列表,通過connection對象得到roster,從而可以使用roster.getGroups()得到
我對Android Camera的認識,會陸續的全部寫下來,逐步完善大腦裡的Camera網絡。1.Android Camera的2個獨立進程Android Camera