OpenJDK 17中的Shenandoah可實現亞毫秒級GC暫停
Redhat在 JDK 12 中釋出了原始的 Shenandoah 垃圾收集器,它實現了併發堆疏散,解決了在不停止應用程式的情況下清理(可能很大)堆的主要問題。這個版本最終被移植到 JDK 11;在 JDK 14 中,實現了併發類解除安裝;在 JDK 16 中,我們新增了併發引用處理,這兩者都進一步減少了垃圾收集操作的暫停時間。暫停下剩餘的垃圾收集操作是執行緒堆疊處理,已經在JDK 17 中解決了這個問題。
下表顯示了 JDK 11、JDK 16 和 JDK 17 中所有基準測試的平均暫停時間。 JDK 16 和 JDK 17 之間的差異顯示了併發堆疊處理所實現的改進。與 JDK 11 的區別是為了完整性而顯示的,包括與以前版本相比的各種其他改進:
JDK 11 1294 微秒 JDK 16 704 微秒 JDK 17 328 微秒 |
OpenJDK 17 中的併發執行緒處理
Java 程式線上程中執行,每個執行緒擁有一個棧:堆疊幀的列表,每個幀儲存著區域性變數、監視器以及與當前執行的方法相關的其他資訊。最重要的是,在 Java 垃圾收集的上下文中,它儲存對堆物件的引用(例如,引用型別化物件的區域性變數)。
透過使用一種稱為堆疊水印的機制(最初由 ZGC 開發人員實現)來實現這一點。中心觀察是所有執行緒堆疊的操作都發生在最頂層的幀中:當前執行的方法。需要做的就是在堆疊幀被銷燬時(例如,透過返回撥用者,或透過丟擲異常)協調 GC 執行緒與正在執行的執行緒,從而退出 GC 處理。這種協調是透過堆疊水印實現的,一個告訴我們堆疊的哪些部分可以安全掃描的指標,以及一個允許垃圾收集器處理返回的屏障。
相關文章
- SharedHashMap是更低延遲無GC暫停的Map實現HashMapGC
- 一次JVM GC長暫停的排查過程JVMGC
- 一次JVM GC長暫停的排查過程!JVMGC
- 戰勝Go和Redis! Java ZGC新GC在數TB記憶體中只有毫秒或更短的暫停 - 邁克的部落格GoRedisJavaGC記憶體
- ManualResetEvent實現執行緒的暫停與恢復執行緒
- Android自定義View——從零開始實現可暫停的旋轉動畫效果AndroidView動畫
- 暫停,掉線,遊戲工作室的現實難題遊戲
- 使用SVG實現的一個Android播放/暫停按鈕SVGAndroid
- vue+樹莓派實現實時視訊播放暫停Vue樹莓派
- 實驗,暫停oracle後臺程式Oracle
- flutter實現B站播放器暫停時的header效果Flutter播放器Header
- Unity3D中暫停時的動畫及粒子效果實現Unity3D動畫
- 通過video實現視訊暫停時出現圖片IDE
- 如何馴服java GC導致暫停? 使用16GiB以上heapJavaGC
- 給祖傳系統做了點 GC調優,暫停時間降低了 90%GC
- windows 如何暫停更新Windows
- 有趣的CSS題目(14): 純 CSS 方式實現 CSS 動畫的暫停與播放!CSS動畫
- ITPUB部落格全新升級 夜間維護暫停公告
- 保護性暫停模式模式
- CSS 滑鼠懸浮動畫暫停效果CSS動畫
- 微軟19H1訊息:Win10家庭版可暫停更新微軟Win10
- 毫秒級查詢的離線IP地址定位庫,太實用了!
- 談談一些有趣的CSS題目(十四)–純CSS方式實現CSS動畫的暫停與播放!CSS動畫
- css3 動畫的暫停和重新開始CSSS3動畫
- 如何避免讓您的亞馬遜賬戶被暫停?亞馬遜
- Video元件:控制視訊的播放與暫停IDE元件
- JavaScript讓當前程式碼執行佇列暫停3s(可自定義)JavaScript佇列
- 短視訊直播原始碼,視訊計時效果,可隨時按鍵暫停原始碼
- oracle expdp後臺終止或者暫停Oracle
- Facebook暫停中國工具類應用廣告
- C++,程式休眠,暫停1sC++
- C語言pause()函式:讓程式暫停直到訊號出現C語言函式
- video同層播放層級過高遮擋模擬暫停按鈕的問題IDE
- AR Engine毫秒級平面檢測,帶來更準確的呈現效果
- 超級高鐵Hyperloop暫不在美國建設 技術很難實現OOP
- 抖音暫停廣告業務 將落實“侮辱英烈”事件處罰結果事件
- mpvue小程式迴圈動畫開啟暫停Vue動畫
- Soul暫停IPO:看點、重點、缺點