溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JVM的四種GC算法分別是什么

發(fā)布時間:2021-10-23 17:39:13 來源:億速云 閱讀:148 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關(guān)JVM的四種GC算法分別是什么,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

程序在運(yùn)行過程中,會產(chǎn)生大量的內(nèi)存垃圾(一些沒有引用指向的內(nèi)存對象都屬于內(nèi)存垃圾,因?yàn)檫@些對象已經(jīng)無法訪問,程序用不了它們了,對程序而言它們已經(jīng)死亡),為了確保程序運(yùn)行時的性能,java虛擬機(jī)在程序運(yùn)行的過程中不斷地進(jìn)行自動的垃圾回收(GC)。

黑馬程序員 理論與實(shí)踐結(jié)合,解密jvm:http://yun.itheima.com/course/584.html?1912zzp

關(guān)于 JVM 的 GC 算法主要有下面四種:1、引用計(jì)數(shù)算法(Reference counting)
每個對象在創(chuàng)建的時候,就給這個對象綁定一個計(jì)數(shù)器。每當(dāng)有一個引用指向該對象時,計(jì)數(shù)器加一;每當(dāng)有一個指向它的引用被刪除時,計(jì)數(shù)器減一。這樣,當(dāng)沒有引用指向該對象時,該對象死亡,計(jì)數(shù)器為0,這時就應(yīng)該對這個對象進(jìn)行垃圾回收操作。2、標(biāo)記–清除算法(Mark-Sweep)
為每個對象存儲一個標(biāo)記位,記錄對象的狀態(tài)(活著或是死亡)。
分為兩個階段,一個是標(biāo)記階段,這個階段內(nèi),為每個對象更新標(biāo)記位,檢查對象是否死亡;第二個階段是清除階段,該階段對死亡的對象進(jìn)行清除,執(zhí)行 GC 操作。3、標(biāo)記–整理算法
標(biāo)記-整理法是標(biāo)記-清除法的一個改進(jìn)版。同樣,在標(biāo)記階段,該算法也將所有對象標(biāo)記為存活和死亡兩種狀態(tài);不同的是,在第二個階段,該算法并沒有直接對死亡的對象進(jìn)行清理,而是將所有存活的對象整理一下,放到另一處空間,然后把剩下的所有對象全部清除。這樣就達(dá)到了標(biāo)記-整理的目的。4、復(fù)制算法
該算法將內(nèi)存平均分成兩部分,然后每次只使用其中的一部分,當(dāng)這部分內(nèi)存滿的時候,將內(nèi)存中所有存活的對象復(fù)制到另一個內(nèi)存中,然后將之前的內(nèi)存清空,只使用這部分內(nèi)存,循環(huán)下去。

這個算法與標(biāo)記-整理算法的區(qū)別在于,該算法不是在同一個區(qū)域復(fù)制,而是將所有存活的對象復(fù)制到另一個區(qū)域內(nèi)。5、JVM不同的版本垃圾回收機(jī)制不一樣,jdk1.7和1.8新版本和老版本區(qū)別
jdk1.7和1.8舊版本Parallel Old,(老年代)
jdk1.7和1.8新版本Parallel Scavenge,(新生代)

Parallel Old 收集器
Parallel Scavenge收集器的老年代版,使用多線程與標(biāo)記–整理算法。這個收集器在jdk1.6中才開始提供的,直到Parallel Old 收集器出現(xiàn)后,“吞吐量優(yōu)先”收集器終于有了比較名副其實(shí)的應(yīng)用組合,在注重吞吐量以及CPU資源敏感的場合,都可以優(yōu)先考慮Parallel Scavenge加 Parallel Old收集器

Parallel Scavenge收集器
Parallel Scavenge收集器是一個新生代的手機(jī)器,使用的是復(fù)制算法的收集器,而且也是多線程的收集器。。Parallel Scavenge收集器,目標(biāo)達(dá)到一個可控制的吞吐量,使用-XX:MaxGCPauseMillus參數(shù)控制垃圾停頓時間,使用-XX:GCTimeRatio參數(shù)控制吞吐量。Parallel Scavenge收集器設(shè)置-XX:UseAdaptiveSizePolicy參數(shù),虛擬機(jī)會根據(jù)當(dāng)前系統(tǒng)的運(yùn)行情況收集性能監(jiān)控信息,動態(tài)調(diào)整這些參數(shù)以提供最合適的停頓時間或者最大吞吐量(GC自使用的調(diào)節(jié)策略)。
自適應(yīng)調(diào)節(jié)策略也是Parallel Scavenge收集器和ParNew收集器一個重要的區(qū)別。

以上就是JVM的四種GC算法分別是什么,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI