https://developer.android.google.cn/studio/profile/android-profiler
一、通過(guò)adb命令
首先我們用電腦連接設(shè)備,用cmd執(zhí)行adb的內(nèi)存檢測(cè)的命令:
adb shell dumpsys meminfo com.yz.multiprocess(com.yz.multiprocess是包名,要改成自己的)
執(zhí)行后會(huì)顯示如下信息:

二、通過(guò)Android Studio分析泄漏內(nèi)存
2.1 我們先寫個(gè)會(huì)發(fā)生內(nèi)存泄漏的程序分析一下:
public class SecondActivity extends Activity {
private static final String TAG = "SecendActivity";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
@Override
protected void onResume() {
super.onResume();
new Thread(new Runnable() {
@Override
public void run() {
while (true){
int i=0;
i++;
}
}
}).start();
Log.i(TAG,"onResume......");
}
}
很簡(jiǎn)單,New一個(gè)Thread匿名內(nèi)部類,子線程里面執(zhí)行while(true),Activity將一直被引用,所以在內(nèi)存回收的時(shí)候,該Activity不會(huì)被回收,由此引發(fā)內(nèi)存泄漏。
2.2下面反復(fù)打開關(guān)閉Activity頁(yè)面多次,然后手動(dòng)GC(點(diǎn)擊左上角的垃圾桶圖標(biāo)),發(fā)現(xiàn)內(nèi)存占用并沒(méi)有減少:

2.3分析一下當(dāng)前的內(nèi)存堆棧情況(點(diǎn)擊垃圾桶圖標(biāo)右側(cè)的圖標(biāo)):
選擇按包名查找,找到當(dāng)前測(cè)試的Activity,發(fā)現(xiàn)存在9個(gè)實(shí)例,由此可見,內(nèi)存已經(jīng)發(fā)生了泄漏
