編輯:關於Android編程
內存洩露,是Android開發者最頭疼的事。可能一處小小的內存洩露,都可能是毀千裡之堤的蟻穴。 怎麼才能檢測內存洩露呢?
AndroidStudio 中Memory控件台(顯示器)提供了一個內存監視器。我們可以通過它方便地查看應用程序的性能和內存使用情況,從而也就可以找到需要釋放對象,查找內存洩漏等。
熟悉Memory界面
打開日志控制台,有一個標簽Memory ,我們可以在這個界面分析當前程序使用的內存情況。
運行要監控的程序(APP)後,打開Android Monitor控制台窗口,可以看到Memory控制台。 點擊Memory控制台上Enable按鈕,Memory控制台開始顯示正在運行時程序的Memory使用情況。如上圖中顯示:
AndroidStudio Memory的功能:
如何檢測內存洩露
我們點擊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會自動去分析當前的內存狀態,如果檢測到洩漏會發送到通知欄,點擊通知欄就可以跳轉到具體的洩漏分析頁面。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
Android系統中的ContextMenu(上下文菜單)類似於PC中的右鍵彈出菜單,當一個視圖注冊到一個上下文菜單時,執行一個在該對象上的“長按”動作,將出
Android的Service若使用非綁定式的創建,則創建後將無法再與它取得聯系,即無法傳遞消息參數等; 所以如果希望創建後仍然與其存在聯系,那麼可以參考我的前幾篇博客《
1:聲明式異常處理什麼是聲明式:就是在web.xml中聲明對各種異常的處理方法。是通過元素來聲明的,下面有幾個子元素如下圖error-code:http錯誤代碼excep
1.背景選擇器(位於res/drawable/,使用方法:android:background=”@drawable/XXX”) 復制代碼 代碼如下: <?xml