iT邦幫忙

0

想請問一下Android Studio 檢查內存洩漏的基本

x5 2020-07-27 00:50:48880 瀏覽
  • 分享至 

  • xImage

小弟剛嘗試開發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();
        }
}

https://ithelp.ithome.com.tw/upload/images/20200727/20102248SW8nEU9Xp1.png
開啟了Profile模式,在成功啟動MainActivity後,直接點選dump java heap,結果如下:
https://ithelp.ithome.com.tw/upload/images/20200727/20102248Ky4Md9Y5ae.png
(在call完finish的狀況下仍有兩個地方還存在於記憶體,點開一個在"public class InitialActivity extends AppCompatActivity"這邊 另一個則是在"new Thread(new Runnable()"這邊)
然而在我點選完Force garbage collection之後,"new Thread(new Runnable()"被釋放掉了,但"public class InitialActivity extends AppCompatActivity"的記憶體還是在被占用著(結果如下):
https://ithelp.ithome.com.tw/upload/images/20200727/20102248OyYPUgNVXh.png

想詢問一下:
按下Force garbage collection後就消失的記憶體代表沒有內存洩漏嗎?(因為網路上的教學蠻多都是教說先按下GC回收再dump,說按下去就消失的記憶體叫"可回收記憶體",所以令我不知道是否還需要處理他們?)

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答