iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
Mobile Development

[Android] 在 activity 與 fragment 身上的 lifecycle系列 第 20

[Day 20] Activity 的 lifecycle - 甜點應用程式 - onDestroy() - 垃圾回收(garbage collected)

  • 分享至 

  • xImage
  •  

在 Day 19,我們提到onDestroy()會關閉 Activity,並讓 Activity 可以被垃圾回收(garbage collected)。

對於記憶體管理的簡介

Android 運行(The Android Runtime, ART)及 Dalvik 虛擬機,使用分頁(paging)和記憶體映射(memory-mapping, mmapping)來管理記憶體。這代表應用程式對記憶體的更動,不論是配置新物件,或是觸及映射頁面,都會被保持在記憶體(RAM)之內,且無法被分頁移出(paged out)。移除應用程式使用記憶體的唯一方法,就是釋放應用程式對其持有物件的引用(references),使記憶體可供垃圾回收。

但有一個例外,任何未經修改的映射檔案,像是代碼(code),當系統想在其他地方使用記憶體時,可將其(本例為代碼 code)從記憶體(RAM)內做分頁移出(paged out)。

什麼是垃圾回收?

在記憶體管理環境,像是ART、Dalvik 虛擬機,會追蹤每個記憶體配置。一旦它確認有不再被使用的記憶體區塊,會將該區塊釋放到堆(heap)裡頭,這個動作不需要開發者的介入。在記憶體管理環境回收未使用記憶體區塊的機制,被稱作垃圾回收。

垃圾回收有兩個目標:

  • 在程序裡尋找不再被存取的資料物件(data objects)
  • 回收這些物件使用的資源

參考資料


上一篇
[Day 19] Activity 的 lifecycle - 甜點應用程式 - onDestroy()
下一篇
[Day 21] Activity 的 lifecycle - 甜點應用程式 - 垃圾回收機制涉及的堆棧(Heap)概念是什麼?
系列文
[Android] 在 activity 與 fragment 身上的 lifecycle30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言