Java/ Xshareclasses

Xshareclasses

■ってかそもそも(スキップして構へん)
Javaってprogramming once running anywhereを目的に始まった言語
なんで
その性能はCに激しく劣るものだった

javaのrunning anywhereを叶えているのは人間のjava語から電脳の機会語に訳すコンパイル
Cとかは静的なコンパイルなのに対しJavaは動的なコンパイル
当初は酷かった性能は今やCに十分匹敵するもの

ただ
経験値から依然Javaが劣るという技術者も少なくなく
Javaも静的コンパイラを採用すべきと提唱している

そんな背景からJavaには
動的コンパイル=JITJust-In-Time
静的コンパイル=AOTAhead-Of-Time
がある
両者は一長一短で排他なものでない

■そして本題の前提(スキップして構へん)
Javaアプリを分離させるにはJVMを分離させれば良い
ただ
JVMの分離となると初期コストやメモリ面は無駄が発生しうる
そこで
JVM間でリソースを共有できないか?
という発想に至る
それを叶えるのがIBMであればXshareclasses

■本題
共有クラス:
複数JVM環境下でシステムクラスを共有メモリにロードして
システムクラスのコア・セットを共有する仕組みで
JVM呼び出しの度にロードするのを避ける
・各JVMでのメモリ容量のコストを削減する
のが狙い

# 共有メモリ=全てのJVMに共有のメモリ領域

■ヒープ(余談)
メモリ=システム・ヒープ(共有ヒープ)+Javaヒープ

システム・ヒープ
Master JVM(Primary JVM)が共有メモリに割り当てるところでシステム・クラスが置かれる
Master JVMの息の限り存在するためGCの対象にならない
# Mater JVMに続く各Worker JVMが共有地としてシステム・ヒープ、非共有の私有地としてそれぞれのJavaヒープを使う
# Javaヒープは常にGCの対象になる

各Worker JVMがシステム・ヒープ(共有ヒープ)にクラスをロードさせるためには
共有可能クラスローダー のクラスパスに対象のクラスを置いとけば良い
# 共有クラスは通常のクラスと同様にparent-delegationモデルでロードされる


ref:
Real-time Java, Part 2: Comparing compilation techniques, 2007/4/17
http://www.ibm.com/developerworks/java/library/j-rtj2/
 in jp
  リアルタイム Java、第 2 回: コンパイル技術を比較する, 2007/4/17
  http://www.ibm.com/developerworks/jp/java/library/j-rtj2/
 in cn
  实时 Java,第 2 部分: 比较编译技术, 2007/5/16
  http://www.ibm.com/developerworks/cn/java/j-rtj2/
 # kr @2007/6/5, br @2011/9/16

Java technology, IBM style: Class sharing, 2006/5/30
http://www.ibm.com/developerworks/java/library/j-ibmjava4/
 in jp
  Java共有クラス, 2004/5/8
  http://www.ibm.com/developerworks/jp/java/library/j-shared/

クラスの共有によるパフォーマンスの向上, 2008/9/30
http://www.ibm.com/developerworks/jp/java/library/j-sharedclasses/

tags:
Xshareclasses JIT AOT Just-In-Time Ahead-Of-Time JVM

tag : Xshareclasses JIT AOT Just-In-Time Ahead-Of-Time JVM

2012-12-28 22:41 : __lang__java : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud