您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關一文讀懂JVM中垃圾回收的原理,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
JVM垃圾回收的算法很多,但是不管是哪種算法,在進行GC時大致的流程都是差不多的,主要有以下3個過程:
1. 枚舉根節點
這個過程主要是找到所有的GC Roots對象,這些對象一般發生在JVM虛擬機棧棧幀、常量池中的靜態對象、方法區中靜態類屬性引用、本地方法棧中引用的對象。這個過程會發生STW,所有的線程均運行到安全區域(Safe Region)才開始執行。
通常有兩種算法:
優點是效率高,缺點是循環引用無法處理,導致內存溢出。
優點可以檢測所有的對象,缺點效率低。
GC Roots節點一般為:
2. 標記
標記的過程主要是標記哪些對象是需要被回收的,有的GC算法是并行的,有的是和GC Roots標記一起執行。如果是并行的,不會發生STW。
如果是并發標記的GC算法,后面還有有一次重新標記或者最終標記。這主要是來解決在并發標記的過程中,用戶線程還在一直執行,這期間有變化的對象。
標記算法常見的有兩種:
3. 清除或回收
這個階段會根據GC算法的不同采取不同的回收策略。
上述就是小編為大家分享的一文讀懂JVM中垃圾回收的原理了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。