最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
【Java快速?gòu)?fù)習(xí)】垃圾回收算法&垃圾回收器-創(chuàng)新互聯(lián)
快速理解 Java 垃圾回收算法 & 垃圾回收器

先說(shuō)個(gè)關(guān)系概念,垃圾回收的算法是邏輯概念的定義,用于規(guī)范垃圾回收器實(shí)現(xiàn)方的一些行為,而垃圾回收器就是實(shí)現(xiàn)這些算法的工具,這些工具大概是一系列的 C++ 的類(lèi)以及其實(shí)現(xiàn)的一些對(duì)應(yīng)回收算法。

成都創(chuàng)新互聯(lián)自成立以來(lái),一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)站制作、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個(gè)性化軟件開(kāi)發(fā)等基于互聯(lián)網(wǎng)的全面整合營(yíng)銷(xiāo)服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開(kāi)發(fā)管理經(jīng)驗(yàn)、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開(kāi)發(fā)工程師團(tuán)隊(duì)及專(zhuān)業(yè)的網(wǎng)站設(shè)計(jì)師團(tuán)隊(duì)。分代和對(duì)象流轉(zhuǎn)

基本上我們常用的垃圾回收算法對(duì)于堆空間都會(huì)有 分代 這一概念,通常來(lái)說(shuō)分為 年輕代 和 老年代

在這里插入圖片描述

年輕代又下分 eden 區(qū) 和 survive0 和 survive1 區(qū)。對(duì)于一個(gè)新的對(duì)象一般來(lái)說(shuō)會(huì)先進(jìn)入年輕代的 eden 區(qū),在對(duì)象的對(duì)象頭 Mark Word 中會(huì)記錄其分代年齡,大是 15 (只給了 4 bit 位來(lái)存),默認(rèn)也是 15。

通常我們說(shuō) GC 的時(shí)候又分為 年輕代的 GC 即 young gc 和 老年代的 GC 即 full gc,一般來(lái)說(shuō) young gc 耗時(shí)遠(yuǎn)低于 full gc 。我們優(yōu)化堆空間分配的過(guò)程就是要盡量避免 full gc 的過(guò)程。

在 young gc 的過(guò)程中,會(huì)對(duì)年輕代區(qū)域的對(duì)象進(jìn)行清理回收,存活下來(lái)的由 eden 進(jìn)入 s0 ,或者由 s0 進(jìn)入 s1 (或者 s1 進(jìn)入 s0 這個(gè)是標(biāo)記復(fù)制的過(guò)程)

每次 young gc 存活下來(lái)的對(duì)象分代年齡就會(huì) +1,當(dāng)達(dá)到 15 時(shí)(這個(gè)可以配置)。會(huì)將其移進(jìn)老年代,不在參與之后的 young gc

這意味著老年代的對(duì)象一般應(yīng)該是存活時(shí)間較長(zhǎng)的對(duì)象。

9

基本的回收算法

標(biāo)記復(fù)制

標(biāo)記復(fù)制,準(zhǔn)備兩部分區(qū)域,這兩部分區(qū)域?qū)嶋H使用只會(huì)用一部分,另一部分作為待復(fù)制空間。在垃圾回收過(guò)程中,將所有非垃圾對(duì)象直接復(fù)制到另一區(qū)域,本區(qū)域清空。 此算法清理速度較快,但空間利用率較低。

在這里插入圖片描述

標(biāo)記清理

標(biāo)記清理算法比較暴力,標(biāo)記好垃圾對(duì)象后直接將垃圾對(duì)象刪除,這個(gè)速度也是很快的,但是會(huì)產(chǎn)生較多的內(nèi)存碎片,進(jìn)而可能影響后續(xù)的空間分配
在這里插入圖片描述

標(biāo)記整理

標(biāo)記整理算法相對(duì)于標(biāo)記清理算法多了一步整理,這不整理會(huì)將清理后碎片化的空間整理為連續(xù)空間,當(dāng)然付出的代價(jià)是整理的耗時(shí)。
在這里插入圖片描述

初級(jí)垃圾回收器 Serial & Parallel

Serial -XX:+UseSerialGC -XX:+UseSerialOldGC

Serial 收集器是最基礎(chǔ)的垃圾收集器,其收集過(guò)程為單線程收集,適用于單核 CPU ,或者垃圾回收異常情況的備選方案,邏輯簡(jiǎn)單高效。

該收集器在垃圾回收過(guò)程中會(huì)全程 STW (Stop The Word 僅垃圾回收線程工作,其他線程暫停,即用戶服務(wù)不可用)

年輕代使用算法:標(biāo)記復(fù)制

老年代使用算法:標(biāo)記整理

Parallel -XX:+UseParallelGC(年輕代),-XX:+UseParallelOldGC(老年代)

Parallel 相當(dāng)于是 Serial 的多線程版,多線程收集效率更高 STW 時(shí)間更短,適用于多核 CPU, 4G 左右內(nèi)存回收都是 OK 的。

年輕代使用算法:標(biāo)記復(fù)制

老年代使用算法:標(biāo)記整理

進(jìn)階常用垃圾收集器 ParNew + CMS & G1

ParNew -XX:+UseParNewGC

這個(gè)玩意,和 Parallel 是一樣的,它的誕生是為了兼容配合 CMS 進(jìn)行垃圾收集,CMS 是老年代的垃圾收集器,它只負(fù)責(zé)老年代的垃圾收集。

CMS

重頭戲,CMS 是 Concurrent Mark Sweep 并發(fā)標(biāo)記清除 ,CMS 進(jìn)行垃圾回收分以下步驟

  1. 初始標(biāo)記 STW:時(shí)間短,標(biāo)記快,僅標(biāo)記 gc roots 根對(duì)象
  2. 并發(fā)標(biāo)記:二階段標(biāo)記,開(kāi)始遍歷 gc roots 引用的對(duì)象并進(jìn)行標(biāo)記,耗時(shí)較長(zhǎng)但不會(huì) STW 可以和用戶線程同時(shí)運(yùn)行
  3. 重新標(biāo)記 STW:三階段標(biāo)記,收拾二階段并發(fā)標(biāo)記的殘局,修正一些用戶線程導(dǎo)致的對(duì)象引用變化
  4. 并發(fā)清理:清理,新增的垃圾不會(huì)處理,所以可能有浮動(dòng)垃圾,但我覺(jué)得吧可以接受
  5. 并發(fā)重置:重置此次 GC 的標(biāo)記數(shù)據(jù)

CMS 對(duì)于 8G 以內(nèi)的內(nèi)存處理表現(xiàn)良好,高于 8G 推薦使用 G1

大家應(yīng)該看出來(lái)了,垃圾收集器的迭代在于想優(yōu)化 STW 的時(shí)間,使其盡量短或者可控

G1 我公司線上服務(wù)就配置的這個(gè)

Garbage First 這個(gè)適用于大內(nèi)存的垃圾收集 32G 以內(nèi)效果比較好 (PS 不建議內(nèi)存分配超過(guò) 32G 內(nèi)存,否則默認(rèn)的指針壓縮將會(huì)失效)

并且 G1 在區(qū)域劃分上進(jìn)行了改變,它將整個(gè)堆空間劃分為多個(gè) Region 區(qū)域默認(rèn)是堆大小除以 2048,而分代的區(qū)域不再是固定的區(qū)域,而是隨著垃圾收集動(dòng)態(tài)調(diào)整。并增加了大對(duì)象區(qū)的概念,如果一個(gè)對(duì)象被認(rèn)定為大對(duì)象(超出 Region 區(qū)的 50%)則直接放到大對(duì)象區(qū) Humongous 此區(qū)域會(huì)在 full gc 時(shí)回收

G1 垃圾回收對(duì)于 CMS 的優(yōu)點(diǎn)就是可控的 STW 時(shí)間,并且因?yàn)闆](méi)有物理隔離年輕代、老年代、存活區(qū),G1 的所有垃圾回收方式都可以使用標(biāo)記復(fù)制進(jìn)行,速度極快

G1 垃圾回收分為以下過(guò)程:

  1. 初始標(biāo)記 STW:速度極快
  2. 并發(fā)標(biāo)記
  3. 重新標(biāo)記 STW
  4. 篩選回收 STW:這個(gè)階段 G1 將根據(jù)用戶期望的 STW 時(shí)間進(jìn)行選擇性的回收,在用戶期望 STW 停頓時(shí)間內(nèi)回收最具性價(jià)比的垃圾。

G1 的垃圾收集分三類(lèi)

young gc : eden 區(qū)滿切預(yù)計(jì)回收時(shí)間接近 -XX:MaxGCPauseMills 配置的暫停時(shí)間則進(jìn)行新生代回收,否則嘗試擴(kuò)容 eden 區(qū)

mixed gc : 混合 gc 在收集區(qū)域上類(lèi)似 CMS 的 full gc ,會(huì)回收 young 和 old 以及 humongous

full gc: 這個(gè)更像是最終解決方案,當(dāng) mixed gc 都無(wú)法正常釋放空間時(shí),將進(jìn)入并發(fā)失敗進(jìn)行單線程的 full gc 全程 STW

之前些了篇詳解感興趣可以看看,這里不在贅述 JVM 垃圾收集器 G1 詳解

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


名稱(chēng)欄目:【Java快速?gòu)?fù)習(xí)】垃圾回收算法&垃圾回收器-創(chuàng)新互聯(lián)
文章出自:http://fisionsoft.com.cn/article/iidip.html