搜尋老魚筆摘(本網誌及所屬協作平台)

2009-02-20

Java JVM 中也有 G1 !! 即將到來的新 Java HotSpot 14

生命是為了任務而來的, 有機會讓我們去奉獻它, 就去奉獻它 !
- 聖嚴法師

迎接新年, 老魚自己寫了反省文 ....
又聞聖嚴法師離開了我們 ...
每個人的人生中都可自見花開與花謝~這就是人生的 "無常" !
老魚也期許自己, 今年要在自己學習的領域中持續比往年"奉獻" 的還要更多 !!!

回到本篇的標題 "Java JVM 中也有 G1 !! ", 嗯 ... 真的快內建了 !
不過不是 Google G1 手機, 而是即將到來的新 Java HotSpot 14 .

為什麼老魚要拿 Java HotSpot 14 來談呢 ?
這是一個很重大的 Java Garbage Collection, GC (垃圾回收)新演算機制,
全名是 The Garbage-First garbage collector 簡稱 G1 .

這是新一代的 GC, 原本預計將隨著 JDK 1.7 (Java HotSpot 14) 一同發佈,
但在本月初 OpenJDK 1.6 所發佈的


卻將其 Java HotSpot 14 替換了原有的 1.6u10 所採用的 Java HotSpot 10.
算是一個大躍進, 可以預見的是 更加有效率與速度的 Java 執行環境到來!
再者我們也不用漫長的等待 JDK 1.7 到來, 就可以在 JDK 1.6 中採用它,
真是令人感到喜悅~
(額外必要說明的是當前的 1.6u14 是一個預先建構的版次,
確定版次將於本年第二季發佈, 故目前僅建議您用在測試產品中.)


Java HotSpot 14 累積解決了不少的舊版本問題外, 包含著
  1. 新的 GC(G1)
  2. Big Decimal 型別的增強
  3. TreeMap 與 HashMap 等 Map class 的增強
  4. 最佳化壓縮 OOP code 產出.
內建的 G1 是預設不被啟用的, 如果你想啟用它, 必須使用如下的參數:
  • -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC
G1 目的是要更可預測和可迅速分配記憶體區塊而設計。
演算的原理在 Sun 的舉例:
JVM 像是一個不可被切割的生活空間像是我們日常的客廳,
在客廳做為孩子們玩具玩樂用的空間,
孩子們的玩具從架子上(APIs)取下並在地板上玩樂(他們創建的物件 objects ),
玩樂過程中, 客廳也需要被整理(GC).

G1 透過新的演算法及對客廳進行看似平坦化的空間, 進行假性的隔間化,
並分析經常或不常使用的玩具置於不同空間來換置管理,
判別消滅的優先權, 這樣提高了GC 的有效性,
尤其是對像是長時間服務的 Server AP 帶來更有效的 GC 管理.
更為多核CPU帶來更有效的 concurrent 管理.

如果您想了解更多有關 GC 與 G1 您可以閱讀以下的文章:

沒有留言:

張貼留言

熱門文章

大智若魚::人生處處是道場-站內SEO參考標籤雲