使用Android Studio檢測記憶體泄露(LeakCanary)_Android

來源:互聯網
上載者:User

記憶體泄露,是Android開發人員最頭疼的事。可能一處小小的記憶體泄露,都可能是毀千裡之堤的蟻穴。 怎麼才能檢測記憶體泄露呢?
AndroidStudio 中Memory控制項台(顯示器)提供了一個記憶體監視器。我們可以通過它方便地查看應用程式的效能和記憶體使用量情況,從而也就可以找到需要釋放對象,尋找記憶體流失等。

熟悉Memory介面

開啟日誌控制台,有一個標籤Memory ,我們可以在這個介面分析當前程式使用的記憶體情況。

運行要監控的程式(APP)後,開啟Android Monitor控制台視窗,可以看到Memory控制台。 點擊Memory控制台上Enable按鈕,Memory控制台開始顯示正在運行時程式的Memory使用方式。如上圖中顯示:

AndroidStudio Memory的功能:

  • 啟動與關閉Memory監測按鈕
  • 手動觸發GC按鈕
  • dump java heap 按鈕,點擊Android Studio就開始幹活了,成功後會自動開啟 hprof檔案。
  • start(stop) allocation tracking按鈕先點擊一次,然後會看到Memory Recorder開始轉動,然後自己開始在APP上面做相應的操作。在合適的時間再點一次,結束記錄。

如何檢測記憶體泄露

我們點擊dump Java heap 這個按鈕,APP會Freeze住。大概幾十秒後,

dump成功後會自動開啟 hprof檔案。

如果我們想瞭解記憶體配置更詳細的情況,可以使用Allocation Traker來查看記憶體到底被什麼佔用了。 點擊Starg Allocation Tracking按鈕。開始分配追蹤,過一些時間後,點擊Stop Allocation Tracking結束追蹤的位置。停止追蹤後 .alloc檔案會自動開啟。

當你想查看某個方法的源碼時,右鍵選擇的方法,點擊Jump to source就可以了。

使用LeakCanary

LeakCanary是square公司推出的一款簡單粗暴的檢測記憶體流失的工具。

LeakCanary會檢測應用的記憶體回收情況,如果發現有垃圾對象沒有被回收,就會去分析當前的記憶體快照,也就是上邊MAT用到的.hprof檔案,找到對象的引用鏈,並顯示在頁面上。這款外掛程式的好處就是,可以在手機端直接查看記憶體泄露的地方,可以輔助我們檢測記憶體泄露。

使用: 

在build.gradle檔案中添加,不同的編譯使用不同的引用:

dependencies {   debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'  releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'}

在應用的Application onCreate方法中添加LeakCanary.install(this),如下:

public class ExampleApplication extends Application { @Override public void onCreate() {  super.onCreate();  LeakCanary.install(this); }}

應用運行起來後,LeakCanary會自動去分析當前的記憶體狀態,如果檢測到泄漏會發送到通知欄,點擊通知欄就可以跳轉到具體的泄漏分析頁面。

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.