小弟剛嘗試開發AS,到了內存監控這邊有些疑問,網路也找了蠻多文章,但實在還是有些模糊,想請益一下大大們:
目前開發一個APP,它從InitialActivity跳轉到MainActivity,之後把initialActivity finsh(),InitialActivity的code大致如下:
public class InitialActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_initial);
final Intent i = new Intent();
//做了些判斷
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
startActivity(i);
InitialActivity.this.finish();
Thread.interrupted();
}
}).start();
}
}
開啟了Profile模式,在成功啟動MainActivity後,直接點選dump java heap,結果如下:
(在call完finish的狀況下仍有兩個地方還存在於記憶體,點開一個在"public class InitialActivity extends AppCompatActivity"這邊 另一個則是在"new Thread(new Runnable()"這邊)
然而在我點選完Force garbage collection之後,"new Thread(new Runnable()"被釋放掉了,但"public class InitialActivity extends AppCompatActivity"的記憶體還是在被占用著(結果如下):
想詢問一下:
按下Force garbage collection後就消失的記憶體代表沒有內存洩漏嗎?(因為網路上的教學蠻多都是教說先按下GC回收再dump,說按下去就消失的記憶體叫"可回收記憶體",所以令我不知道是否還需要處理他們?)