Java 虛擬機器永久代的垃圾收集
永久代中的垃圾收集主要回收兩個部分內容:
廢棄常量和無用類
常量的回收: 當系統中沒有任何常量物件引用常量池中的常量,也沒有其他敵法引用這個字面量,如果發生記憶體回收,必要的話, 沒有使用的常量將會被系統清理出常量池
什麼叫做無用類:
判斷一個類是否是無用類的條件有三個:
1,該類的所有例項都已經被回收,也就是Java堆中不存在該類的任何例項
2, 載入該類的class loader 已經被回收
3,該類對應的Java,lang,class 隊形沒有在任何地方被引用,無法在任何地方通過反射訪問該類的方法
垃圾收集器演算法:
標記 - 清除演算法:
分為標記,清除兩個階段,首先標記出所有需要回收的物件,在標記完成後同意回收所有被標記的物件
複製演算法:將可用的記憶體按照容量劃分為大小相等的涼快。每次只使用其中的一塊,當這一塊的記憶體使用完了,將還存貨的物件複製到另外一塊上面,然後把已使用過的記憶體空間一次清理掉,這樣每次都是堆整個半區進行記憶體回收。(新生代一般使用這種方式)
標記 整理演算法 :同標記清除演算法一樣,但是後續的步驟不是直接堆可回收的物件進行清理,而是讓存活的物件都向一端移動,然後直接清涼掉邊界意外的記憶體
分代收集演算法:
根據物件存活週期的不同將記憶體劃分為幾塊,一般是把Java堆分為新生代和老年代,這又就可用根據各個年代的特點採用最適當的收集演算法
在新生代中,每次垃圾收集的時候都發現有大批物件死去,只有少量存活,那就選擇複製演算法,只需要付出少量存活物件的複製成本就可用完成收集
老年代中因為物件存活率高,沒有額外的空間對他進行分配擔保,就必須使用 標記 清理,獲取標記 整理演算法來進行回收
新生代GC (Minor GC ) 指的是新生代的垃圾蒐集動作,因為Java物件大多都具備招生熄滅的特性 ,所以新生代 GC 發生非常頻繁,一般回收速度也比較快
老年代 GC (Magir /full GC ) 在老年代的GC 出現了Major GC 經常會伴隨至少一次的Minorr
GC (但並不是絕對的 ) 一般來說 老年代GC 比新生代GC 滿2 10 倍以上
相關文章
- Java虛擬機器04——垃圾收集器Java虛擬機
- Java 虛擬機器垃圾收集機制詳解Java虛擬機
- Java虛擬機器詳解(四)------垃圾收集器Java虛擬機
- Java虛擬機器03——垃圾收集演算法Java虛擬機演算法
- Java 虛擬機器(四)垃圾收集演算法Java虛擬機演算法
- 詳解Java 虛擬機器(第⑤篇)——垃圾收集Java虛擬機
- 深入理解java虛擬機器之垃圾收集器Java虛擬機
- JVM虛擬機器-垃圾回收機制與垃圾收集器概述JVM虛擬機
- 深入理解Java虛擬機器 --- 垃圾標記/收集演算法Java虛擬機演算法
- 《深入理解java虛擬機器》筆記3——7種垃圾收集器Java虛擬機筆記
- 深入理解Java虛擬機器筆記之四關於垃圾收集器Java虛擬機筆記
- 深入理解Java虛擬機器-垃圾收集器與記憶體分配策略Java虛擬機記憶體
- 深入學習Java虛擬機器——垃圾收集器與記憶體分配策略Java虛擬機記憶體
- 深入理解Java虛擬機器 - 垃圾收集器與記憶體分配策略Java虛擬機記憶體
- 深入理解Java虛擬機器 --- 垃圾回收器Java虛擬機
- Java虛擬機器詳解(三)------垃圾回收Java虛擬機
- 【深入理解Java虛擬機器】垃圾回收Java虛擬機
- 《深入理解Java虛擬機器》(二)--垃圾收集器與記憶體分配策略(2)Java虛擬機記憶體
- Java虛擬機器系列之垃圾回收機制(2)Java虛擬機
- Java虛擬機器:JVM架構與垃圾回收Java虛擬機JVM架構
- Java虛擬機器之垃圾回收演算法Java虛擬機演算法
- 《深入java虛擬機器》讀書筆記之垃圾收集器與記憶體分配策略Java虛擬機筆記記憶體
- 每日一問:講講 Java 虛擬機器的垃圾回收Java虛擬機
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- 深入理解Java虛擬機器之垃圾回收篇Java虛擬機
- 深入理解Java虛擬機器筆記之五GC日誌和垃圾收集器引數Java虛擬機筆記GC
- java虛擬機器和Dalvik虛擬機器Java虛擬機
- Android 虛擬機器 Vs Java 虛擬機器Android虛擬機Java
- 老生常談Java虛擬機器垃圾回收機制(必看篇)Java虛擬機
- [深入理解Java虛擬機器]垃圾回收演算法Java虛擬機演算法
- java幾種垃圾收集方法和垃圾收集器Java
- [深入理解Java虛擬機器]Hotspot垃圾回收演算法Java虛擬機HotSpot演算法
- Java 虛擬機器之三:Java虛擬機器的記憶體結構Java虛擬機記憶體
- Java面試題虛擬機器為什麼使用元空間替換了永久代(JVM篇)Java面試題虛擬機JVM
- GC 分代回收 - 垃圾收集器GC
- 深入理解虛擬機器之垃圾回收虛擬機
- Java虛擬機器(JVM)Java虛擬機JVM
- java~graalVM虛擬機器JavaLVM虛擬機
- Java虛擬機器-GC垃圾回收演算法-引用計數法Java虛擬機GC演算法