IBM J9
表示
(IBM J9 VMから転送)
開発元 | |
---|---|
最新版 | |
リポジトリ |
github |
プログラミング 言語 | |
対応OS | |
種別 | Java仮想マシン |
ライセンス | |
公式サイト |
www |
IBM J9は、IBMによって開発されたJava仮想マシン。同社のWebSphere製品や、DB2製品の標準VMとして利用されている。IBMは元々Java2対応のJDKを提供しており、チューニングされたclassic VMを同梱していたが、Java 5準拠のJDKを提供するにあたって新たにVMを開発し、IBM J9 VMと命名した。
IBMはJavaOne 2016でJ9をオープンソース化する計画を発表し[2]、その後J9はEclipse Foundationに寄贈され、Eclipse OpenJ9に改称して公開された[3][4]。
GCポリシー
[編集]以下のようなポリシーが提供されている。
- optthruput
- ヒープに新たなオブジェクトの割り当てができなくなった時点でGCを行う。スループットに優れるが、stop-the-world (STW) の発生時間が長い。2.6より前までのデフォルトポリシー。
- optavgpause
- アプリケーションスレッドの中で少しずつマークを行い、ヒープの空きがなくなることを予測するとGCを行う。事前処理によってoptthruputより、スループットは減少するが、STWの時間は抑制される。
- gencon
- 世代別GC。New世代 (nursery) とOld世代 (tenure) の領域にヒープを分割し、通常はnurseryに対してGC (scavenger) を行う。nurseryはヒープ全体の一部分であるため、scavenger時はSTW時間を大幅に削減することが可能となる。ただし、scavengerはcopy gc方式を採用しておりメモリ空間としては無駄が存在する。v2.6からデフォルトで選択されるポリシーとなった。
- subpool
- AIXのみで有効となるGC方式。大量のオブジェクトを生成する際にパフォーマンスを発揮する。
- blanced - v2.6以降
- ヒープを一定サイズで分割し、各々の領域に対してGCの必要性を判断、選択された領域に対してのみGCを行う。global gcが大幅に抑制されるが、大規模ヒープに最適化した方式であるため、小規模なヒープでの動作には向いていない。
診断用ツール
[編集]トラブル診断用のツールが豊富に用意されている。 以下はJVMの起動オプションを付与するだけで利用可能となっている。
- dump agents
- 例外の発生時といったイベントをトリガーに、javadumpを出力したり、外部ツールを呼び出す機能。
- シグナル受信時やOutOfMemoryError発生時にjavadumpを出力する機能は、この機能により実装されている。
- method trace
- メソッドの呼び出しや終了、呼び出しの引数などをトレースする機能。
採用
[編集]- IBM SDK
- IBM社の製品プロダクトに同梱される形で提供される他に、IBM Developerからの単体ダウンロードも可能となっている[5][6][7]。
- OpenJDK
- OpenJDKディストリビューションの一つであるAdoptOpenJDKがOpenJ9ビルドを配布していた[6]。2021年、AdoptOpenJDKはEclipse Adoptiumへ移行し、それにともないOpenJ9ビルドの提供を終了した[8]。
- IBM Semeru Runtimes
- AdoptOpenJDKによるOpenJ9ビルド提供終了を受けて、IBMはOpenJDKのOpenJ9ビルドSemeru Runtimesを提供開始した[8][9]。
脚注
[編集]- ^ a b “0.30.0 | projects.eclipse.org”. 2022年2月6日閲覧。
- ^ “IBM、自社のJavaVMをオープンソース化すると発表。COBOLやPL/IのランタイムをJavaVMにも。Java 9と同時に正式版リリースを予定。JavaOne 2016”. Publickey. (2016年9月26日) 2019年9月27日閲覧。
- ^ “JavaVM「Eclipse OpenJ9」公開。IBMが「Java 9と同時にオープンソース化する」との約束を果たす”. Publickey. (2017年9月22日) 2019年9月27日閲覧。
- ^ “Eclipse Open J9 – Eclipse OMRプロジェクトベースのオープンソースJava仮想マシン”. InfoQ (2018年3月19日). 2019年9月27日閲覧。
- ^ “SDK のインストール”. IBM. 2019年9月27日閲覧。
- ^ a b “最適なOpenJDKディストリビューションの選び方” (pdf). p. 41. 2019年9月27日閲覧。
- ^ “Downloads - Overview - Java SDK” (英語). IBM Developer. IBM. 2019年9月27日閲覧。
- ^ a b “Good-bye AdoptOpenJDK. Hello Adoptium!” (英語). 2022年2月5日閲覧。
- ^ “Introducing the no-cost IBM Semeru Runtimes to develop and run Java applications” (英語). 2022年2月5日閲覧。