内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

【Java快速復(fù)習(xí)】垃圾回收算法&垃圾回收器-創(chuàng)新互聯(lián)

快速理解 Java 垃圾回收算法 & 垃圾回收器

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

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

基本上我們常用的垃圾回收算法對于堆空間都會有 分代 這一概念,通常來說分為 年輕代 和 老年代

在這里插入圖片描述

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

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

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

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

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

9

基本的回收算法

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

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

在這里插入圖片描述

標(biāo)記清理

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

標(biāo)記整理

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

初級垃圾回收器 Serial & Parallel

Serial -XX:+UseSerialGC -XX:+UseSerialOldGC

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

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

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

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

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

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

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

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

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

ParNew -XX:+UseParNewGC

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

CMS

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

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

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

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

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

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

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

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

G1 垃圾回收分為以下過程:

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

G1 的垃圾收集分三類

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

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

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

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

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

分享題目:【Java快速復(fù)習(xí)】垃圾回收算法&垃圾回收器-創(chuàng)新互聯(lián)
鏈接地址:http://m.rwnh.cn/article8/iidip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、全網(wǎng)營銷推廣、網(wǎng)站維護(hù)、動態(tài)網(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)站
齐齐哈尔市| 廉江市| 抚松县| 历史| 伊金霍洛旗| 十堰市| 赣榆县| 轮台县| 屏边| 民乐县| 万州区| 响水县| 莎车县| 蓬莱市| 海原县| 札达县| 乌拉特后旗| 麻江县| 永嘉县| 河曲县| 庆阳市| 靖边县| 越西县| 科技| 朝阳市| 南召县| 大庆市| 石楼县| 凌源市| 仲巴县| 锡林浩特市| 武夷山市| 庆元县| 仪陇县| 仁布县| 阿克| 申扎县| 裕民县| 临海市| 芦溪县| 垫江县|