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