[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12593] Re: 「 JAVA CONCURRENCY IN PRACTICE 」を読 む会第7回予習編



高橋(徹)です。

もう暦では明日がJava読書会ですが、予習編がなかなか進みません。

> > ・p.259 メモリの同期化(p.260 脚注4)
> >  escape analysisによる最適化(lock elision)、lock coarseningに
> >  ついて調べてみる
> 1) JavaOne 2006 TS-3412 "New Compiler Optimizations in the Java HotSpot
>   Virtual Machine"
>  下記URLの一覧からTS-3412のオンラインプレゼンおよびPDFが参照できます。
> http://sdc.sun.co.jp/java/learning/javaoneonline/2006/coreplatform/index.html

興味深い記事でした。HotSpot JavaVMは同期のコストがどんどん小さくなって
性能向上しているという一般論はよくあちこちで見ますが、この記事では同期
をどんな仕組みで実現しているか解説しています。

ライトウェイト・ロック
 オブジェクトのロックをアトミック演算(CAS命令)で獲得し、失敗したら
 OSレベルのロック(mutex/condition)を獲得するそうです。オブジェクトの
 メモリイメージの先頭ワードをCAS命令でスタックへ移動することでロック獲得
 を表し、スタックから戻すことでロック解放を表すというもの。
 
エスケープ・アナリシス
 メソッド内でアロケートしたオブジェクトが、そのメソッドからエスケープしない
 ことが確実なら、他のスレッドからは変更されないのでがしがし最適化ができます、
 という代物。他のスレッドからアクセスされないので、そのオブジェクトのロック
 (synchronized)は除去してしまえるというのがロック・イリージョン。

Tiered Compilation
 興味深い話しで、HotSpot JavaVMのclientコンパイラとserverコンパイラを
 同じJavaVM実行中に切り替えてしまおうというもの。
 #Java SE 6ではどこまで実現できているか記事中から読み取れず。


--
TAKAHASHI,Toru
torutk@xxxxxxxxxxxx