Java 垃圾回收01(基本過程)
支援Java語言的執行時系統,具有自動管理記憶體的功能,從而化解了C/C++程式設計師特別苦惱的記憶體管理問題,而自動化記憶體管理的核心便是自動垃圾回收。
什麼是自動垃圾回收?
自動垃圾回收是一種清理堆記憶體中無用物件的機制。該機制能夠找出堆記憶體中哪些物件正在被使用,哪些物件不會被使用,並將後者進行刪除。所謂正在被使用的物件指的是尚有引用的物件,即是說程式執行到目前為止,仍然有指標指向該物件。而未被使用的物件,是指從當前開始,將不會再有任何指標指向該物件,因此該物件佔用的記憶體需要被回收利用。
在使用不支援自動垃圾回收的程式語言時(例如:C和C++),程式設計師需要手動申請和釋放記憶體。而支援自動垃圾回收語言的執行時系統,一般會有垃圾回收器,以代替程式設計師進行記憶體管理。本文接下來將闡述自動垃圾回收機制的基本過程。
第一步:標記
自動垃圾回收的第一步是標記出當前堆記憶體中哪些物件正在被使用,哪些將不會再被使用。並分別進行標記,如下圖中所示,其中藍色部分表示正在被使用的物件,橙色表示不再被使用的物件。垃圾回收器需要進行掃描檢查才能知道物件的使用情況,而如果每次都對系統中所有物件進行檢查,將會消耗大量時間。
第二步:清除
這一步會將對標記出的不再被使用的物件進行刪除,同時記憶體分配器會接管可用記憶體,以供分配新物件時使用。刪除後的示意圖,如下圖所示。
第二步:壓縮
為了進一步提升效能,在刪除掉未被使用的物件後,還需要將剩下的正在被使用的物件移動到一起(壓縮),這樣就可以更簡單快捷地分配新物件了。壓縮後的示意圖,如下圖所示。
相關文章
- Java垃圾回收Java
- Java——GC(垃圾回收)JavaGC
- java垃圾回收機制Java
- Java 垃圾回收機制Java
- Java中的垃圾回收Java
- java垃圾回收機制整理Java
- java JVM垃圾回收機制JavaJVM
- Java垃圾回收演算法Java演算法
- 理解 Java 垃圾回收機制Java
- Java的垃圾回收機制Java
- JAVA垃圾回收機制和Python垃圾回收對比與分析JavaPython
- JVM調優:基本垃圾回收演算法JVM演算法
- 4 個問題圖解瀏覽器垃圾回收的過程。圖解瀏覽器
- java讀書筆記---垃圾回收Java筆記
- java記憶體垃圾回收模型Java記憶體模型
- Java垃圾回收是如何工作的?Java
- Java 垃圾回收機制概念梳理Java
- Java垃圾回收調優實戰Java
- 垃圾回收(一)【垃圾回收的基礎】
- java垃圾回收有哪些演算法Java演算法
- Java的垃圾回收(Garbage Collection)機制Java
- Java記憶體管理 -JVM 垃圾回收Java記憶體JVM
- 不同Java垃圾回收器的比較Java
- Java經典垃圾回收器介紹Java
- JVM 垃圾回收演算法和垃圾回收器JVM演算法
- JVM垃圾回收JVM
- javascript垃圾回收JavaScript
- golang垃圾回收Golang
- jvm - 垃圾回收JVM
- JavaScript 垃圾回收JavaScript
- [JVM]垃圾回收JVM
- oracle定期清空回收過程Oracle
- Java虛擬機器 —— 垃圾回收機制Java虛擬機
- 不同的Java垃圾回收器的比較Java
- java垃圾回收器的工作機制Java
- 學習Java:垃圾回收與程式設計Java程式設計
- Java11改進的垃圾回收器Java
- JVM調優總結(三)-基本垃圾回收演算法JVM演算法