Java出現一個新的GC:LXR
LXR是一種基於引用計數的新 Java 垃圾收集器,一種新的低延遲、高吞吐量的垃圾回收器。
該文在OpenJDK 11(當時的LTS)中構建了LXR,與現有G1、Shenandoah和ZGC等回收器進行了比較評估,LXR 在吞吐量和應用程式延遲方面都可以勝過這些回收器。
LXR採取了與現有生產型回收器非常不同的方法,使用先進的引用計數進行及時回收,謹慎地避免了併發複製的開銷。
LXR是以應用的延遲為目標,而不是以降低“暫停”為目標,專注於效率。複製回明智地執行的,並且僅在短暫的 STW 暫停期間執行,避免了併發複製的開銷。
點選標題,文章摘錄:
自2004年以來,G1是一種基於區域的設計與併發追蹤和嚴格疏散設計,這種設計一直主導著生產型垃圾回收器。
本文確認了這些先前的設計侷限性,因為僅疏散的併發回收成本很高,而且由於完全的堆追蹤,它們的回收也有延遲。
雖然它們提供了很短的暫停時間,但對於請求驅動的時間關鍵型工作負載來說,短暫停並不總是轉化為低延遲。
我們引入了LXR,它採取了一種完全不同的方法。它使用短暫的停頓和引用計數,在不復制的情況下及時回收大部分記憶體。
它通過有限的機會性複製對堆進行碎片整理。
它同時回收成熟的物件,識別迴圈中的死物件和引用計數卡住的死物件。
其結果是一個具有適度暫停時間的收集器,提供低應用延遲和高吞吐量。
我們的結果對堆的大小和微體系結構是穩健的。
這些初步結果表明,這種新的設計提供了效能而不需要額外的硬體或記憶體。我們希望這項工作能引起人們對現代收集器設計的重新思考,併為GC研究注入新的活力。
相關文章
- 一個關於JAVA GC的小實驗JavaGC
- 第一個只出現一次的字元——Java字元Java
- 【idea】編譯java專案時出現java.lang.OutOfMemoryError: GC overhead limit exceededIdea編譯JavaErrorGCMIT
- java GC CollectorJavaGC
- Java實現第一個程式碼,輸出 hello worldJava
- 自己實現一個java的arraylistJava
- 深入理解Java的垃圾回收機制(GC)實現原理JavaGC
- 伺服器出現了一個新軟體,一幫大佬吵起來了!伺服器
- 十個問題弄清JVM&GC(一)JVMGC
- JAVA GC日誌分析JavaGC
- 淺談對java-GC的理解JavaGC
- 聊一聊 JVM 的 GCJVMGC
- Java虛擬機器-GC垃圾回收演算法-判定一個物件是否是可回收的物件Java虛擬機GC演算法物件
- 才釋出幾個小時 有黑客發現了iOS 12.1一個新的密碼繞過漏洞黑客iOS密碼
- Java以後將可以不用GC實現記憶體回收JavaGC記憶體
- 遇到一個建表時出現的問題
- Java實現一個簡單的計算器Java
- 給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。陣列
- Java 15 正式釋出, 14 個新特性,重新整理你的認知!!Java
- GO的GC辣雞回收(一)GoGC
- 每日一練(23):第一個只出現一次的字元字元
- java 一個類實現兩個介面的案例Java
- Java 22正式釋出,一文了解全部新特性Java
- mysql 計算 一個文字欄位的內容一個文字出現的次數MySql
- Go並不需要Java風格的GCGoJavaGC
- 用java實現一個簡單的區塊鏈Java區塊鏈
- java實現一個簡單的爬蟲小程式Java爬蟲
- 用java實現一個簡單的計算器Java
- java中什麼樣的物件才能作為gc root物件,gc root物件有哪些Java物件GC
- Java 11正式釋出,這幾個逆天新特性教你寫出更牛逼的程式碼Java
- JZ-034-第一個只出現一次的字元位置字元
- Java操作hdfs出現的問題Java
- Mybatis order by 動態傳參出現的一個小bugMyBatis
- 如何實現一個簡單的釋出訂閱模式模式
- java實現用一個變數表示多個屬性的狀態Java變數
- 一個Bug,讓我發現了 Java 界的.AJ(錐)!Java
- Java11正式釋出,這幾個逆天新特性教你寫出更牛逼的程式碼Java
- 使用Java實現一個JS指令碼引擎JavaJS指令碼