Java 9の先、Java 10/11では最新のハードウェアやOSに最適化したデータのメモリ配置が可能になる。JavaOne 2015

2015年10月26日

サンフランシスコで「JavaOne 2015」が開幕。基調講演の後半では、2018年かそれ以降になると見られるJava 10やJava 11に向けて開発中のプロジェクトが紹介されています。

最新のハードウェアに最適化されたデータ構造の実現により、実行速度の向上などが見込まれる「Project Valhalla」と「Project Panama」です。

基盤となるハードウェアやOSに適合していく

Java Platform Group Java LanguageアーキテクトBrian Goetz氏。

Java 9の先、Java 10、11を見ていこう。

fig

JavaVMにとってハードウェアの進化は重大なことだ。JavaVMはその基盤となるハードウェアやOSに適合し続けるため、動く標的を狙い続けている。

ここではOpenJDKでそれらに関わる「Project Valhalla」と「Project Panama」を紹介する。

Project Valhallaは、データ自身によりオブジェクトのオーバーヘッドなどを取り除こうとしている。Project PanamaはネイティブコードやネイティブデータでJVMのデータセクションを最適化するものだ。

fig

Javaが登場した頃、シングルコアシステムで小さなメモリ、パイプラインもキャッシュもなかった。いまは、マルチコア、マルチソケットで、CPUキャッシュやメモリも大量に積まれている。コア自身も洗練されてきた。

しかし、Javaのデータとメモリのレイアウトは、昔のプロセッサのモデルのまま。最新のハードウェアやOSに最適化した、よりよいメモリ効率、キャッシュ効率が求められる。

Project ValhallaとProject Panamaはこのために、OSやメモリとJVMとのやりとりを再構成するものだ。特に、メモリとキャッシュの利用効率のためにデータを緻密かつ平坦に配置する。

例えば、毎日目にするようなシンプルな、xとyからなるオブジェクトがあるとする。

fig

これに対するポインタの配列を設定すると、オブジェクトごとのヘッダの分だけオーバーヘッドが存在するし、ポインタのヘッダの部分もオーバーヘッドだ。

fig

Javaが登場した1995年の時点では、すべてがオブジェクトで柔軟性を持たせるために配列ポインタを使うのが望ましかった。

しかし最新のシステムでは、(CPUキャッシュのキャッシュミスのペナルティを避けるため)より純粋なデータが望ましい。

これを解決するため「Value」型を取り入れる。クラスを純粋なデータとして扱える。

fig

するとデータの配置はこうなる。よりキャッシュフレンドリーでありメモリ効率も高い

fig

データの高いローカリティでキャッシュ効率が高まり、プリフェッチで効率よくデータがとらえられる。

もしも超高速なコードを書かなくとも、Value型はJDKが最適化してくれる。

JavaOne 2015

Oracle OpenWorld 2015

このエントリーをはてなブックマークに追加
follow us in feedly

タグ : Java



≫次の記事
Java20周年を祝ってJavaOneにスコット・マクニーリ氏がスペシャルメッセージ。「Javaプログラマにとって最悪な10のコト」を発表。JavaOne 2015
≪前の記事
[速報]JavaOne開幕。Java 9は「Project Jigsaw」でクラスパスの問題とJDK肥大化の問題を解決する。JaveOne 2015

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed



Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus