国产中文字幕在线视频,.com久久久,亚洲免费在线播放视频,神九影院电视剧免费观看,奇米在线888,天天网综合,久久免费视频观看

溫州網(wǎng)站建設(shè)公司有哪些wordpress 數(shù)據(jù)庫(kù)備份

鶴壁市浩天電氣有限公司 2026/01/22 10:17:29
溫州網(wǎng)站建設(shè)公司有哪些,wordpress 數(shù)據(jù)庫(kù)備份,北京市建設(shè)信息網(wǎng),迅速提高網(wǎng)站排名Java 垃圾回收#xff08;GC#xff09;算法詳解目標(biāo)#xff1a;把 “Java 是怎么判斷對(duì)象能不能回收”、以及 “具體用什么算法回收” 講清楚#xff0c;并順手把它們和 HotSpot 的分代收集、常見收集器聯(lián)系起來(lái)。1. GC 要解決的核心問題 Java 的自動(dòng)內(nèi)存管理主要解決兩件…Java 垃圾回收GC算法詳解目標(biāo)把“Java 是怎么判斷對(duì)象能不能回收”、以及“具體用什么算法回收”講清楚并順手把它們和 HotSpot 的分代收集、常見收集器聯(lián)系起來(lái)。1. GC 要解決的核心問題Java 的自動(dòng)內(nèi)存管理主要解決兩件事判斷哪些對(duì)象“死了”不可達(dá)用什么方式回收它們占用的內(nèi)存算法與實(shí)現(xiàn)真正的回收動(dòng)作本質(zhì)上就是圍繞這兩件事在做工程取舍吞吐量、延遲STW、內(nèi)存碎片、CPU 開銷、并發(fā)復(fù)雜度等。2. 對(duì)象“是否存活”的判定可達(dá)性分析Reachability Analysis2.1 引用計(jì)數(shù)法Reference Counting——理論簡(jiǎn)單Java 主流不使用思路對(duì)象有一個(gè)計(jì)數(shù)器引用 1取消引用 -1計(jì)數(shù)為 0 就回收。致命問題無(wú)法解決循環(huán)引用。A - B B - AA、B 互相引用計(jì)數(shù)都不為 0但其實(shí)外界已經(jīng)不可達(dá)了導(dǎo)致內(nèi)存泄漏。HotSpot 主流采用可達(dá)性分析而不是引用計(jì)數(shù)。2.2 可達(dá)性分析從 GC Roots 出發(fā)“找活人”思路把一批“肯定活著的對(duì)象”當(dāng)作根GC Roots從根出發(fā)沿引用鏈遍歷能走到的對(duì)象存活走不到的對(duì)象可回收GC Roots 常見來(lái)源非常重要虛擬機(jī)棧棧幀中的引用局部變量方法區(qū)靜態(tài)變量中的引用方法區(qū)中常量引用字符串常量池等JNI 引用Native 方法里持有的對(duì)象活躍線程對(duì)象、同步鎖持有的對(duì)象如synchronized關(guān)聯(lián)的 Monitor“為什么局部變量沒置 null 也會(huì)被回收”因?yàn)?JIT 可能做逃逸分析/標(biāo)量替換/棧上分配或者優(yōu)化掉某些引用的作用域能否回收取決于可達(dá)性不是你“看起來(lái)還在變量里”。3. GC 算法的“基本動(dòng)作”不管你用什么收集器核心操作通常就是這幾個(gè)步驟的組合標(biāo)記Mark找出要回收/要保留的對(duì)象清除Sweep把不可達(dá)對(duì)象的內(nèi)存釋放整理Compact把存活對(duì)象挪一挪消除碎片復(fù)制Copy把存活對(duì)象復(fù)制到另一塊區(qū)域天然緊湊不同算法的差異就是怎么標(biāo)記怎么釋放是否移動(dòng)對(duì)象是否產(chǎn)生碎片是否需要額外空間是否能并發(fā)4. 四大經(jīng)典 GC 算法4.1 標(biāo)記-清除Mark-Sweep流程從 GC Roots標(biāo)記存活對(duì)象掃描堆把未標(biāo)記對(duì)象的內(nèi)存清除優(yōu)點(diǎn)實(shí)現(xiàn)簡(jiǎn)單不需要移動(dòng)對(duì)象對(duì)象地址穩(wěn)定缺點(diǎn)內(nèi)存碎片多大量不連續(xù)空洞影響分配效率清除階段可能掃描成本高回收前 [A][B][C][D][E] 回收后 [A][ ][C][ ][E] - 產(chǎn)生碎片適用場(chǎng)景對(duì)象移動(dòng)成本高的場(chǎng)景但現(xiàn)代 JVM 更多用整理或區(qū)域化來(lái)解決碎片4.2 標(biāo)記-整理Mark-Compact流程標(biāo)記存活對(duì)象把存活對(duì)象往一側(cè)緊湊搬遷直接清理掉邊界外的空間優(yōu)點(diǎn)無(wú)碎片內(nèi)存連續(xù)分配效率高bump-the-pointer 線性分配缺點(diǎn)移動(dòng)對(duì)象成本高需要更新引用指針修正STW 時(shí)間可能更長(zhǎng)實(shí)現(xiàn)也更復(fù)雜回收前 [A][ ][C][ ][E] 整理后 [A][C][E][ ][ ]適用場(chǎng)景老年代回收常用對(duì)象存活率高復(fù)制不劃算碎片又不能忍4.3 復(fù)制算法Copying / Semi-space流程把內(nèi)存分成兩塊From、To只用 From 分配對(duì)象回收時(shí)把存活對(duì)象復(fù)制到 To并讓它們緊湊排列交換 From/To優(yōu)點(diǎn)回收速度快只復(fù)制存活對(duì)象天然無(wú)碎片分配非常快線性指針缺點(diǎn)空間浪費(fèi)需要一塊等大備用區(qū)理論上 50%對(duì)象存活率高時(shí)復(fù)制成本高適用場(chǎng)景新生代大部分對(duì)象“朝生夕死”存活率低復(fù)制非常劃算4.4 分代收集Generational Collection這不是單獨(dú)的一種“微觀算法”而是一種宏觀策略基于經(jīng)驗(yàn)規(guī)律絕大多數(shù)對(duì)象生命周期很短熬過多次 GC 的對(duì)象更可能長(zhǎng)期存活。因此把堆分成新生代Young對(duì)象創(chuàng)建集中、死亡率高 → 用復(fù)制算法老年代Old對(duì)象存活率高 → 用標(biāo)記-清除/標(biāo)記-整理/區(qū)域化算法新生代的典型結(jié)構(gòu)HotSpot 常見EdenSurvivor0S0Survivor1S1對(duì)象一般在 Eden 分配Minor GC 時(shí)把 Eden 一個(gè) Survivor 里的存活對(duì)象復(fù)制到另一個(gè) Survivor達(dá)到閾值就晉升到老年代。5. 現(xiàn)代 GC 里的關(guān)鍵技術(shù)點(diǎn)算法落地必備5.1 STWStop-The-World為了保證對(duì)象圖一致性GC 在某些階段需要暫停應(yīng)用線程Mutator。目標(biāo)就是盡量縮短 STW甚至讓多數(shù)工作并發(fā)做完。5.2 寫屏障Write Barrier與記憶集Remembered Set分代收集有個(gè)麻煩老年代對(duì)象可能引用新生代對(duì)象。Minor GC 只回收新生代時(shí)如果每次都全堆掃描找這種引用成本爆炸。解決寫屏障 Card Table / Remembered Set對(duì)象引用發(fā)生寫入時(shí)如oldObj.field youngObj通過寫屏障把對(duì)應(yīng)“卡頁(yè)”標(biāo)記為臟Minor GC 時(shí)只掃描這些臟卡對(duì)應(yīng)的老年代區(qū)域即可5.3 三色標(biāo)記Tri-color Marking與并發(fā)標(biāo)記問題并發(fā)標(biāo)記時(shí)應(yīng)用線程也在改引用會(huì)出現(xiàn)漏標(biāo)本該活著但沒標(biāo)到 → 這是致命錯(cuò)誤多標(biāo)本該死但被標(biāo)了 → 只是浮動(dòng)垃圾下一輪再收現(xiàn)代并發(fā) GC如 CMS/G1/ZGC/Shenandoah都會(huì)用SATBSnapshot-At-The-Beginning或增量更新Incremental Update配合寫屏障來(lái)解決一致性問題。6. 把“算法”映射到 HotSpot 常見收集器快速對(duì)號(hào)入座收集器Collector是“工程實(shí)現(xiàn)”它們內(nèi)部會(huì)組合使用上面的算法。6.1 Serial / ParNew新生代復(fù)制算法STWSerial 單線程ParNew 多線程6.2 Parallel Scavenge新生代復(fù)制算法目標(biāo)偏吞吐量Throughput6.3 Serial Old / Parallel Old老年代標(biāo)記-整理為主STW主要用于吞吐量場(chǎng)景6.4 CMS老年代已逐步被替代標(biāo)記-清除 并發(fā)標(biāo)記優(yōu)點(diǎn)低停頓缺點(diǎn)碎片問題、并發(fā)失敗Concurrent Mode Failure、對(duì) CPU 壓力大6.5 G1面向服務(wù)端默認(rèn)/主流之一堆劃分為多個(gè) Region整體是“分代 區(qū)域化 標(biāo)記整理局部”通過預(yù)測(cè)模型控制停頓時(shí)間Pause Time Goal通過Mixed GC同時(shí)回收部分老年代 Region6.6 ZGC / Shenandoah超低停頓重點(diǎn)是“并發(fā)移動(dòng)對(duì)象 并發(fā)標(biāo)記”依賴讀/寫屏障與復(fù)雜的指針染色等技術(shù)目標(biāo)極低 STW通常毫秒級(jí)甚至更低代價(jià)是實(shí)現(xiàn)復(fù)雜、對(duì)平臺(tái)/版本依賴更強(qiáng)面試時(shí)可以這么收口經(jīng)典算法講原理收集器講工程權(quán)衡新生代傾向復(fù)制老年代傾向整理/區(qū)域化低停頓靠并發(fā) 屏障。7. 常見問題與面試“易錯(cuò)點(diǎn)”7.1 為什么新生代適合復(fù)制老年代不適合新生代存活率低 → 復(fù)制少量對(duì)象成本低速度快老年代存活率高 → 復(fù)制對(duì)象多成本高還需要等大備用空間不劃算7.2 標(biāo)記-清除為什么會(huì)影響性能碎片導(dǎo)致分配慢可能觸發(fā)更多 GC大對(duì)象分配可能因?yàn)檎也坏竭B續(xù)空間而失敗需要整理或 Full GC7.3 什么是浮動(dòng)垃圾并發(fā)標(biāo)記期間新產(chǎn)生的垃圾可能沒被本輪標(biāo)記識(shí)別出來(lái)例如 SATB 語(yǔ)義下它們會(huì)留到下一輪回收。這不是 bug是并發(fā) GC 的設(shè)計(jì)權(quán)衡。8. 一句話總結(jié)存活判定可達(dá)性分析GC Roots基礎(chǔ)算法標(biāo)記-清除、標(biāo)記-整理、復(fù)制宏觀策略分代收集年輕代復(fù)制、老年代整理/區(qū)域化現(xiàn)代優(yōu)化并發(fā)標(biāo)記 寫屏障 記憶集 三色標(biāo)記一致性9. 推薦延伸閱讀可選《深入理解 Java 虛擬機(jī)》周志明—— GC 部分是面試高頻OpenJDK / HotSpot 源碼 JEP了解 G1/ZGC 的設(shè)計(jì)動(dòng)機(jī)與邊界
版權(quán)聲明: 本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系我們進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

巴中建設(shè)網(wǎng)站wordpress菜單頁(yè)面定位

巴中建設(shè)網(wǎng)站,wordpress菜單頁(yè)面定位,wordpress mip 插件,網(wǎng)摘網(wǎng)站推廣法DeepNet深度學(xué)習(xí)框架#xff1a;架構(gòu)解析與應(yīng)用實(shí)踐 【免費(fèi)下載鏈接】deepnet Impleme

2026/01/21 16:42:01

重慶網(wǎng)站建站推廣會(huì)計(jì)網(wǎng)站建設(shè)

重慶網(wǎng)站建站推廣,會(huì)計(jì)網(wǎng)站建設(shè),連云港做網(wǎng)站最好,做網(wǎng)站好公司博主介紹#xff1a;??碼農(nóng)一枚 #xff0c;專注于大學(xué)生項(xiàng)目實(shí)戰(zhàn)開發(fā)、講解和畢業(yè)#x1f6a2;文撰寫修改等。全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者#x

2026/01/21 15:33:01

周到的網(wǎng)站建設(shè)推廣小廣告模板

周到的網(wǎng)站建設(shè)推廣,小廣告模板,哪個(gè)網(wǎng)站做演唱會(huì)門票,成都易銳互動(dòng)科技有限公司RPA測(cè)試的獨(dú)特性與挑戰(zhàn) 在金融、醫(yī)療、制造業(yè)的數(shù)字化轉(zhuǎn)型浪潮中#xff0c;RPA#xff08;機(jī)器人流程自動(dòng)化#xf

2026/01/21 17:59:01