2009年5月30日

JavaSE 6u14推出,終於支援escape analysis...

最近Sun更新了JavaSE 6推出了6u14這個更新版,裡面不少有趣的新特色,其中和VM本身最為相關的部分有三(目前都是選用或實驗性的功能):
  1. Optimization Using Escape Analysis
  2. Compressed Object Pointers
  3. Garbage First (G1) Garbage Collector
其中第一項,我在兩年半前的文章裡提過(事實上,更早就有相關研究了),但直到現在,新版的hotspot才開始支援以escape analysis為基礎的優化(像是stack allocation、lock elimination等)。這也許可以說明一件簡單的現象:學界講求的是research,而業界重視的則是quality...

補充:sby大神提示,Apache Harmony早在兩年前就支援escape analysis及相關的優化技術了。

第二項其實也不新了,早在兩三年前的學術界裡就出現過相關的討論了。簡單的來說,為了避免64bit pointer帶來的space overhead,可以用類似offset的方式來記錄objects的address。缺點就是,存取時會帶來一些execution time overhead,heap的大小也會有限制。優點當然就是heap空間的節省了。也可以參考這篇簡介這裡

第三項Garbage First (G1) Garbage Collector,主要演算法來自於2004年的一篇paper,內容還沒有時間好好看過,但據說有不少好處:
Garbage First, or G1, is a low pause, server style collector. G1's primary advantages over the Concurrent Mark-Sweep (CMS) collector include incremental compaction, better predictability and ease of use.
比較值得注意的是,目前若想將G1應用在production的用途中,必須要與Sun簽署合約。後續發展。

以上提到的新特色,其中一部分將會成為JDK 7的標準功能,可以想見這些特色在未來將會更為成熟完整。

BTW,Hotspot中有不少功能或優化技術,實際上是學業界合作的成果,除了上面提到的部分外,像是client compiler裡的SSA support,也是學界的成果。研究的成果能夠被用在實際的產品中,其實是很棒的事,除了代表成果有實際的用途外,也代表了來自業界的肯定,真是令人嚮往啊...

沒有留言:

張貼留言