[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