欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

jvm垃圾回收機制的原理

這篇文章主要講解了“jvm垃圾回收機制的原理”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“jvm垃圾回收機制的原理”吧!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)公司、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了南城免費建站歡迎大家使用!

垃圾回收機制原理:

jvm如何判斷一個對象是不是垃圾?

使用可達(dá)性分析法去對一個GC roots對象進(jìn)行分析,從一個節(jié)點GC ROOT 開始,尋找對應(yīng)的引用節(jié)點,找到這個節(jié)點以后,繼續(xù)尋找這個節(jié)點的引用節(jié)點,當(dāng)所有的引用節(jié)點尋找完畢之后,剩余的節(jié)點則被認(rèn)為是沒有被引用到的節(jié)點,即無用的節(jié)點也就是垃圾。

java 中可作為 GC Root 的對象有:

1.虛擬機棧中引用的對象(本地變量表)

2.方法區(qū)中靜態(tài)屬性引用的對象

3. 方法區(qū)中常量引用的對象

4.本地方法棧中引用的對象(Native 對象)

對垃圾進(jìn)行回收的垃圾回收算法:

1.Mark-Sweep(標(biāo)記-清除)算法

這是最基礎(chǔ)的垃圾回收算法,之所以說它是最基礎(chǔ)的是因為它最容易實現(xiàn),思想也是最簡單的。標(biāo)記-清除算法分為兩個階段:標(biāo)記階段和清除階段。標(biāo)記階段的任務(wù)是標(biāo)記出所有需要被回收的對象,清除階段就是回收被標(biāo)記的對象所占用的空間。標(biāo)記-清除算法實現(xiàn)起來比較容易,但是有一個比較嚴(yán)重的問題就是容易產(chǎn)生內(nèi)存碎片,碎片太多可能會導(dǎo)致后續(xù)過程中需要為大對象分配空間時無法找到足夠的空間而提前觸發(fā)新的一次垃圾收集動作。

2.Copying(復(fù)制)算法 新生代GC算法

它將可用內(nèi)存按容量劃分為大小相等的兩塊,每次只使用其中的一塊。當(dāng)這一塊的內(nèi)存用完了,就將還存活著的對象復(fù)制到另外一塊上面,然后再把已使用的內(nèi)存空間一次清理掉,這樣一來就不容易出現(xiàn)內(nèi)存碎片的問題。

這種算法雖然實現(xiàn)簡單,運行高效且不容易產(chǎn)生內(nèi)存碎片,但是卻對內(nèi)存空間的使用做出了高昂的代價,因為能夠使用的內(nèi)存縮減到原來的一半。

很顯然,Copying 算法的效率跟存活對象的數(shù)目多少有很大的關(guān)系,如果存活對象很多,

那么 Copying 算法的效率將會大大降低。

在復(fù)制算法中,當(dāng)?shù)诙€步驟往復(fù)一次,jvm內(nèi)對象年齡加一,當(dāng)jvm往返15次,年齡達(dá)到15時,新生代會轉(zhuǎn)為老年代。

3.Mark-Compact(標(biāo)記-整理)算法

標(biāo)記整理算法在標(biāo)記清除方法的基礎(chǔ)之上,也就是先對垃圾進(jìn)行標(biāo)記清除之后,再使存活對象向另一側(cè)移動,進(jìn)行整理。

4.Generational Collection(分代收集)算法

分代收集算法是目前大部分 JVM 的垃圾收集器采用的算法。它的核心思想是根據(jù)對象存活的生命周期將內(nèi)存劃分為若干個不同的區(qū)域。一般情況下將堆區(qū)劃分為老年代(TenuredGeneration)和新生代(Young Generation),老年代的特點是每次垃圾收集時只有少量對象需要被回收,而新生代的特點是每次垃圾回收時都有大量的對象需要被回收,那么就可以根據(jù)不同代的特點采取最適合的收集算法。

對于新生代采取標(biāo)記復(fù)制算法,因為新生代中每次垃圾回收都要回收大部分對象,也就是說需要復(fù)制的操作次數(shù)較少,但是實際中并不是按照 1:1 的比例來劃分新生代的空間的,一般來說是將新生代劃分為一塊較大的 Eden 空間和兩塊較小的Survivor 空間,每次使用 Eden 空間和其中的一塊 Survivor 空間,當(dāng)進(jìn)行回收時,將 Eden和 Survivor 中還存活的對象復(fù)制到另一塊 Survivor 空間中,然后清理掉 Eden 和剛才使用過的 Survivor 空間。

老年代的特點是每次回收都只回收少量對象,所以使用標(biāo)記整理算法。

注意,在堆區(qū)之外還有一個代就是永久代(Permanet Generation),它用來存儲 class類、常量、方法描述等。

對永久代的回收主要回收兩部分內(nèi)容:廢棄常量和無用的類。

感謝各位的閱讀,以上就是“jvm垃圾回收機制的原理”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對jvm垃圾回收機制的原理這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

當(dāng)前名稱:jvm垃圾回收機制的原理
分享鏈接:http://chinadenli.net/article48/gopghp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、服務(wù)器托管、營銷型網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站排名、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)