<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                > 參考文章:? > [Android內存優化之二:MAT使用進階](http://ju.outofmemory.cn/entry/172685)? > [Android內存優化之一:MAT使用入門](http://ju.outofmemory.cn/entry/172684)? > [MAT中的Bitmap圖像?](http://androidperformance.com/2015/04/11/AndroidMemory-Open-Bitmap-Object-In-MAT/) > [10 Tips for using the Eclipse Memory Analyzer](http://eclipsesource.com/blogs/2013/01/21/10-tips-for-using-the-eclipse-memory-analyzer/) # MAT使用 MAT工具全稱為Memory Analyzer Tool,一款詳細分析Java堆內存的工具,該工具非常強大,為了使用該工具,我們需要hprof文件,該文件我們在之前的[Heap Snapshot工具](http://blog.csdn.net/itfootball/article/details/48786275)的時候,我們就生成了該文件。但是該文件不能直接被MAT使用,需要進行一步轉化,可以使用hprof-conv命令來轉化,但是Android Studio可以直接轉化,轉化方法如下:? 1.選擇一個hprof文件,點擊右鍵選擇`Export to standard .hprof`選項。? ![](https://box.kancloud.cn/2015-12-31_56849d326f6de.jpg)? 2.填寫更改后的文件名和路徑:? ![](https://box.kancloud.cn/2015-12-31_56849d32a01c9.jpg) 點擊OK按鈕后,MAT工具所需的文件就生成了,下面我們用MAT來打開該工具:? 1.打開MAT后選擇`File->Open File`選擇我們剛才生成的doctorq.hprof文件? ![](https://box.kancloud.cn/2015-12-31_56849d32d8312.jpg)? 2.選擇該文件后,MAT會有幾秒種的時間解析該文件,有的hprof文件可能過大,會有更長的時間解析,解析后,展現在我們的面前的界面如下:? ![](https://box.kancloud.cn/2015-12-31_56849d32f2dc2.jpg) 這是個總覽界面,會大體給出一些分析后初步的結論 # Overview視圖 該視圖會首頁總結出當前這個Heap dump占用了多大的內存,其中涉及的類有多少,對象有多少,類加載器,如果有沒有回收的對象,會有一個連接,可以直接參看(圖中的Unreachable Objects Histogram)。? 比如該例子中顯示了Heap dump占用了41M的內存,5400個類,96700個對象,6個類加載器。? 然后還會有各種分類信息: ## Biggest Objects by Retained Size 會列舉出Retained Size值最大的幾個值,你可以將鼠標放到餅圖中的扇葉上,可以在右側看出詳細信息: ![](https://box.kancloud.cn/2015-12-31_56849d3319e1e.jpg)? 圖中灰色區域,并不是我們需要關心的,他是除了大內存對象外的其他對象,我們需要關心的就是圖中彩色區域,比如圖中2.4M的對象,我們來看看該對象到底是啥: ![](https://box.kancloud.cn/2015-12-31_56849d33539fa.jpg)? 該對象是一個Bitmap對象,你如果想知道該對象到底是什么圖片,可以使用圖片工具gimp工具瀏覽該對象. ## # histogram視圖 histogram視圖主要是查看某個類的實例個數,比如我們在檢查內存泄漏時候,要判斷是否頻繁創建了對象,就可以來看對象的個數來看。也可以通過排序看出占用內存大的對象:? ![](https://box.kancloud.cn/2015-12-31_56849d337bfb4.jpg) 默認是類名形式展示,你也可以選擇不同的顯示方式,有以下四種方式:? ![](https://box.kancloud.cn/2015-12-31_56849d33a7d4f.jpg) 下面來演示一下:? ![](https://box.kancloud.cn/2015-12-31_56849d33cfe82.jpg) # Dominator tree視圖 ![](https://box.kancloud.cn/2015-12-31_56849d344fe0a.jpg) 該視圖會以占用總內存的百分比來列舉所有實例對象,注意這個地方是對象而不是類了,這個視圖是用來發現大內存對象的。這些對象都可以展開查看更詳細的信息,可以看到該對象內部包含的對象:? ![](https://box.kancloud.cn/2015-12-31_56849d3488cba.jpg) # Leaks suspects視圖 ![](https://box.kancloud.cn/2015-12-31_56849d34be793.jpg) ![](https://box.kancloud.cn/2015-12-31_56849d34d6ac2.jpg) 這個視圖會展示一些可能的內存泄漏的點,比如上圖上圖顯示有3個內存泄漏可疑點,我們以`Problem Suspect 1`為例來理解該報告,首先我們來看該可疑點詳細信息:? ![](https://box.kancloud.cn/2015-12-31_56849d3505b98.jpg) 上面信息顯示`ImageCahe`類的一個實例`0xa50819f8`占用了14.19%的內存,具體值為5147200字節(5147200/1024/1024=4.9M),并存放在LinkedHashMap這個集合中,然后我們點擊Details跳轉到更詳細的頁面:? ![](https://box.kancloud.cn/2015-12-31_56849d3522708.jpg)? 這樣我們就能找到在我們的app源碼中造成該泄漏可疑點的地方,很容易去定位問題.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看