Memory Profilers
是分析內存工具的集合,它包括如下三部分:html
Memory Monitor Tool
Heap Viewer
Allocation Tracker
Memory Monitor
Memory Monitor
是Android Studio
中自帶的內存檢測工具,它的做用有:android
Gc
引發。這個工具位於Android Studio/Monitor
一欄當中,前面咱們在介紹MAT
的時候曾經使用過它,首先編寫一個簡單的demo
,經過它能夠分配和回收內存:bash
public class TrackerObject {
List<Bitmap> mBitmaps = new ArrayList<>();
public void allocBitmaps() {
for (int i = 0; i < 100; i++) {
Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
mBitmaps.add(bitmap);
}
}
public void releaseBitmaps() {
for (Bitmap bitmap : mBitmaps) {
bitmap.recycle();
}
mBitmaps.clear();
}
}
public class TrackerActivity extends Activity {
private TrackerObject mTrackerObject;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tracker);
mTrackerObject = new TrackerObject();
}
public void alloc(View view) {
mTrackerObject.allocBitmaps();
}
public void release(View view) {
mTrackerObject.releaseBitmaps();
}
}
複製代碼
alloc
以後,內存不斷上漲。release
以後,內存並不會馬上降低,而是須要點擊左邊的「垃圾車」按鈕來主動觸發垃圾回收,這時候能夠看到曲線馬上降低,說明此時觸發了垃圾回收過程。App
當前使用的內存。App
,可是當前沒有使用的內存。alloc
,最後就會拋出OOM
異常錯誤:
Heap Viewer
Heap Viewer
有點像是MAT
的簡化版,它是Android Device Monitor
中的一個工具: ide
2
中的開關是打開的5
來觸發一次Gc
,這樣才能獲得最新的內存使用狀況。Allocation Tracker
Allocation Tracker
是用來記錄一段時間內的內存分配狀況,而且它能夠列出分配對象的大小,以及是由哪一個函數分配的。 下面,咱們先看一下如何使用: 函數
Heap Viewer
相似,其展示結果在
Heap
的右邊,當咱們須要得到一段時間的內存分配,那麼須要如下幾步:
start Tracking
App
,這裏咱們點擊alloc
按鈕分配一些Bitmap
Get Locations
,得到從開始到結束的內存分配狀況各列值的含義:工具
Alloc Order
:分配的順序Allocation Size
:分配的大小Allocated Class
:分配對象的類名Thread id
:分配的線程id
Allocated in
:分配到哪一個對象當中。在整個區域的最下方,則是分配該對象的函數調用堆棧信息,這也是這個工具最有用的地方,經過它咱們就能夠分析出是代碼中哪一段邏輯致使了某個對象的分配。ui
下面,咱們來總結一下這三個工具各自的特色:spa
Memory Monitor
GC
是不是形成應用卡頓的緣由。App
的崩潰。Gc
發生的時間,並分析這是不是合適的時間。Heap Viewer
Allocation Tracker
Heap Viwer
一塊兒使用,來分析大對象產生的緣由。
http://android.xsoftlab.net/tools/performance/comparison.html
.net