欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JVM系列:判斷對象是否已死和四種垃圾回收算法總結(jié)-創(chuàng)新互聯(lián)

判斷對象是否已死

判斷對象是否已死就是找出哪些對象是已經(jīng)死掉的,以后不會再用到的,就像地上有廢紙、飲料瓶和百元大鈔,掃地前要先判斷出地上廢紙和飲料瓶是垃圾,百元大鈔不是垃圾。判斷對象是否已死有引用計數(shù)算法和可達性分析算法。

雁峰ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

1.引用計數(shù)算法

給每一個對象添加一個引用計數(shù)器,每當有一個地方引用它時,計數(shù)器值加 1;每當有一個地方不再引用它時,計數(shù)器值減 1,這樣只要計數(shù)器的值不為 0,就說明還有地方引用它,它就不是無用的對象。如下圖,對象 2 有 1 個引用,它的引用計數(shù)器值為 1,對象 1有兩個地方引用,它的引用計數(shù)器值為 2 。

這種方法看起來非常簡單,但目前許多主流的虛擬機都沒有選用這種算法來管理內(nèi)存,原因就是當某些對象之間互相引用時,無法判斷出這些對象是否已死,如下圖,對象 1 和對象 2 都沒有被堆外的變量引用,而是被對方互相引用,這時他們雖然沒有用處了,但是引用計數(shù)器的值仍然是 1,無法判斷他們是死對象,垃圾回收器也就無法回收。

2.可達性分析算法

了解可達性分析算法之前先了解一個概念——GC Roots,垃圾收集的起點,可以作為 GC Roots 的有虛擬機棧中本地變量表中引用的對象、方法區(qū)中靜態(tài)屬性引用的對象、方法區(qū)中常量引用的對象、本地方法棧中 JNI(Native 方法)引用的對象。

當一個對象到 GC Roots 沒有任何引用鏈相連(GC Roots 到這個對象不可達)時,就說明此對象是不可用的,是死對象。

如下圖:object1、object2、object3、object4 和 GC Roots 之間有可達路徑,這些對象不會被回收,但 object5、object6、object7 到 GC Roots 之間沒有可達路徑,這些對象就被判了死刑。

2.復制算法

把內(nèi)存分為大小相等的兩塊,每次存儲只用其中一塊,當這一塊用完了,就把存活的對象全部復制到另一塊上,同時把使用過的這塊內(nèi)存空間全部清理掉,往復循環(huán),如下圖。

缺點:實際可使用的內(nèi)存空間縮小為原來的一半,比較適合。

3.標記-整理算法

先對可用的對象進行標記,然后所有被標記的對象向一段移動,最后清除可用對象邊界以外的內(nèi)存,如下圖。

4.分代收集算法

把堆內(nèi)存分為新生代和老年代,新生代又分為 Eden 區(qū)、From Survivor 和 To Survivor。一般新生代中的對象基本上都是朝生夕滅的,每次只有少量對象存活,因此采用復制算法,只需要復制那些少量存活的對象就可以完成垃圾收集;老年代中的對象存活率較高,就采用標記-清除和標記-整理算法來進行回收。

在這些區(qū)域的垃圾回收大概有如下幾種情況:

大多數(shù)情況下,新的對象都分配在Eden區(qū),當 Eden 區(qū)沒有空間進行分配時,將進行一次 Minor GC,清理 Eden 區(qū)中的無用對象。清理后,Eden 和 From Survivor 中的存活對象如果小于To Survivor 的可用空間則進入To Survivor,否則直接進入老年代);Eden 和 From Survivor 中還存活且能夠進入 To Survivor 的對象年齡增加 1 歲(虛擬機為每個對象定義了一個年齡計數(shù)器,每執(zhí)行一次 Minor GC 年齡加 1),當存活對象的年齡到達一定程度(默認 15 歲)后進入老年代,可以通過 -XX:MaxTenuringThreshold 來設置年齡的值。

當進行了 Minor GC 后,Eden 還不足以為新對象分配空間(那這個新對象肯定很大),新對象直接進入老年代。

占 To Survivor 空間一半以上且年齡相等的對象,大于等于該年齡的對象直接進入老年代,比如 Survivor 空間是 10M,有幾個年齡為 4 的對象占用總空間已經(jīng)超過 5M,則年齡大于等于 4 的對象都直接進入老年代,不需要等到 MaxTenuringThreshold 指定的歲數(shù)。

在進行 Minor GC 之前,會判斷老年代大連續(xù)可用空間是否大于新生代所有對象總空間,如果大于,說明 Minor GC 是安全的,否則會判斷是否允許擔保失敗,如果允許,判斷老年代大連續(xù)可用空間是否大于歷次晉升到老年代的對象的平均大小,如果大于,則執(zhí)行 Minor GC,否則執(zhí)行 Full GC。

當在 java 代碼里直接調(diào)用 System.gc() 時,會建議 JVM 進行 Full GC,但一般情況下都會觸發(fā) Full GC,一般不建議使用,盡量讓虛擬機自己管理 GC 的策略。

永久代(方法區(qū))中用于存放類信息,jdk1.6 及之前的版本永久代中還存儲常量、靜態(tài)變量等,當永久代的空間不足時,也會觸發(fā) Full GC,如果經(jīng)過 Full GC 還無法滿足永久代存放新數(shù)據(jù)的需求,就會拋出永久代的內(nèi)存溢出異常。

大對象(需要大量連續(xù)內(nèi)存的對象)例如很長的數(shù)組,會直接進入老年代,如果老年代沒有足夠的連續(xù)大空間來存放,則會進行 Full GC。

最后

后續(xù)會持續(xù)更新性能優(yōu)化專題知識,寫的不好的地方也希望大牛能指點一下,大家覺得不錯可以點個贊在關(guān)注下我,剛剛?cè)腭v,以后還會分享更多文章!

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。

網(wǎng)頁標題:JVM系列:判斷對象是否已死和四種垃圾回收算法總結(jié)-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://aaarwkj.com/article38/ccpesp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設網(wǎng)站改版、App開發(fā)、服務器托管小程序開發(fā)、響應式網(wǎng)站

廣告

聲明:本網(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)站建設網(wǎng)站維護公司
欧美成人精品在线观看| 国产原创剧情av网址| 亚洲伦理一区二区三区中文| 韩国三级在线视频网站| 日韩国产欧美亚洲一区| 97在线资源视频播放| 欧美日韩国产91在线| 男女激情视频久久精品| 亚洲av香蕉一区二区| 中文岳妇荡欲丰满肥熟| 在线 | 一区二区三区四区| 欧洲一区二区三区黄色| 日韩欧美国产综合第一页| 国产在线乱码一区二区| 亚洲成人av网址大全| 91久久精品凹凸一区二区| 日本少妇熟女一区二区| 美女床上激情啪啪网页| 日韩黄片一区二区三区| 日日躁夜夜躁狠狠躁黑人| 人妻少妇久久久久久69| 特色特色欧美黄色影院| 高清日本一区二区三区不卡片| av成人黄色片在线播放| 久久人婷婷人人澡人人爽| 91伊人激情综合久久| 中文字幕精品一区二区三区精品 | 黄色国产欧美国产亚洲| 日本成熟亚洲中文字幕的| 亚洲av成人三区国产精品| 久草免费人妻视频在线| 五月婷婷色综合激情五月| 日本高清不卡在线播放| 精品黄色大片不卡国产| 久久精品久久久精品| 欧美激情欧美狂野欧美精品| 国产我不卡在线观看免费| 国产精品久久高清免费| 人成午夜视频在线播放| 上海老熟女啪啪露脸高潮| 四虎在线观看精品一区|