1 Java SE Subscription Enterprise Performance Packの概要

Java SE Subscription Enterprise Performance Packは、JDK 17 Java仮想マシン(JVM)のパフォーマンスをJava SE 8ランタイムに提供するランタイムです。ほとんどの場合、Java SE 8アプリケーションは変更せずにEnterprise Performance Packで実行できます。

Enterprise Performance Packは、Java SE 8ワークロードのパフォーマンスを向上させ、メモリー・フットプリントを削減します。Java SE 8を使用する必要があり、Java SE 8ワークロードを大規模に実行している場合に最適です。プロセッサとメモリーが有効に利用されます。

Enterprise Performance Packは、64ビットのLinux (IntelまたはARM)を実行しているサーバー側のヘッドレス・システム(グラフィカル・ユーザー・インタフェースやキーボードやマウスなどの周辺デバイスなしで動作するシステム)向けです。詳細は、「Oracle JDK 8およびJRE 8の動作保証済システム構成」を参照してください。これは、Oracle Java SE SubscriptionおよびOracle Cloud Infrastructureの一部として使用できます。

注意:

Enterprise Performance Packはランタイムです。JavaDoc APIドキュメントは含まれていません。Java SE 8アプリケーションを開発する場合は、Oracle Java SE Development Kit 8を使用してください。

Enterprise Performance Packの機能および拡張機能

Enterprise Performance Packには、次の新機能が含まれています:

  • Zガベージ・コレクタ: スケーラブルな低レイテンシのガベージ・コレクタです。
  • コンパクト文字列: 文字列のスペース効率を高めた内部表現で、メモリー・フットプリントおよびガベージ・コレクション・アクティビティを削減します。これはデフォルトで有効になっています。
  • 統合JVMロギング: JVMに関する詳細を出力するJDK 8オプションが-Xlogオプションに置き換わります。「JVM情報の出力」を参照してください。

Enterprise Performance Packには次の拡張機能が含まれています:

  • ガベージファースト(G1)ガベージ・コレクタ: Enterprise Performance Packのデフォルトのガベージ・コレクタです。これは、大容量のメモリーを搭載するマルチプロセッサ・マシンを対象としています
  • G1の文字列の重複排除: 多くのStringオブジェクトが同じであるという事実を利用して、Javaヒープ上のStringオブジェクトのメモリー・フットプリントを削減します。これはデフォルトで無効になっています。-XX:+UseStringDeduplicationオプションを使用して有効にします。JDK 17ドキュメントのjavaコマンドを参照してください。
  • クラス・データ共有(CDS): 複数のJVM間の起動時間とメモリー・フットプリントを削減するのに役立ちます。Enterprise Performance Packでは、これはデフォルトで有効になっています。これを無効にするには、「手動によるクラス・データ共有の制御」を参照してください。
  • フライト・レコーダ: 実行中のJavaアプリケーションの診断およびプロファイリングのデータを収集するツールです。

Enterprise Performance Packで動作が異なる、またはサポートされていないツールおよびライブラリのリストは、「Enterprise Performance Packでのツールの実行とライブラリの使用」を参照してください。詳細は、「Enterprise Performance Packのその他の相違点」を参照してください。

Enterprise Performance Packのインストール

Enterprise Performance Packをインストールするには、.tar.gz Enterprise Performance Packバンドルをダウンロードして解凍します。

注意:

Enterprise Performance Packは、Oracle Java SE Subscription Java SE SubscriptionおよびOracle Cloud Infrastructureの一部として使用できます。My Oracle Support (MOS)およびoracle.com/javadownloadsからダウンロードできます。

Enterprise Performance Packバンドル名の形式はjdk-8u$UPDATE-perf-linux-x64.tar.gzで、$UPDATEは更新バージョン番号です。この番号は、Enterprise Performance Packの基盤となるJDK 8更新バージョンに対応しています。

Enterprise Performance Packバージョン文字列

Enterprise Performance Packバージョン文字列には、文字列perfが含まれています。コマンドjava -versionでは、次のEnterprise Performance Packバージョン文字列が出力されます:

  • 基盤となるJava SE 8ランタイムのバージョン
  • 基盤となるJDK 17 Java仮想マシンのバージョン

コマンドjava -versionでは、次のような出力が表示されます:

$ java -version
java version "1.8.0_345"
Java(TM) SE Runtime Environment (build 1.8.0_345-perf-4711-b06)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.4+1-perf-4711, mixed mode)

Enterprise Performance Packの構成と使用

ほとんどの場合、Enterprise Performance Packを出荷時の状態で使ってアプリケーションを実行すると、パフォーマンスが向上します。ただし、最適なパフォーマンスを実現するには、適切なガベージ・コレクタを使用するようにEnterprise Performance Packを構成してください。また、一部のツールおよびライブラリはJava SE 8とは動作が異なることに注意してください。

注意:

Enterprise Performance Packの使用に関する追加のヘルプ(固有のまたは例外的なユース・ケースや状況のサポートなど)が必要な場合は、My Oracle Supportに連絡してください。

ガベージ・コレクタの選択

Enterprise Performance PackでJava SE 8アプリケーションを初めて実行する場合は、デフォルトのガベージ・コレクタであるガベージファースト(G1)をデフォルト設定で使用してみてください。ほとんどの場合は、JDK 8ガベージ・コレクタを使用してアプリケーションを微調整した場合でも、パフォーマンスは大幅に向上します。その後、JDK 17ドキュメントの説明に従ってG1を構成します。または、次の表を参照してください。JDK 8で使用しているガベージ・コレクタに応じて使用を推奨されるガベージ・コレクタが示されています。

表1-1 推奨されるガベージ・コレクタ

現在のJDK 8コレクタ Enterprise Performance Packで推奨されるコレクタ
パラレル・コレクタ -XX:+UseParallelGCオプションを明示的に指定して、パラレル・コレクタを引き続き使用します。JDK 8で使用していたチューニング・オプションを引き続き使用します。
G1 ガベージファースト(G1)ガベージ・コレクタは、Enterprise Performance Packのデフォルトのコレクタです。これを引き続き使用します。–XX:+UseG1GCオプションを明示的に指定する必要はありません。
コンカレント・マーク・スイープ(CMS)コレクタ

CMSはEnterprise Performance Packでは使用できません。かわりに、G1をデフォルト設定で使用してください。その後、「他のコレクタからG1に移行」のチューニングの推奨事項に従います。アプリケーションのレイテンシまたは応答性の要件を満たせない場合は、Zガベージ・コレクタ(ZGC)の使用を検討してください。

スケーラブルな低レイテンシ・コレクタを探している

Zガベージ・コレクタ(ZGC)を使用します。-XX:+UseZGCオプションを使用して有効にします。

ガベージ・コレクタの選択に関する追加のアドバイスについては、『Java Platform, Standard Edition HotSpot仮想マシン・ガベージ・コレクション・チューニング・ガイド』リリース17ガベージファースト・ガベージ・コレクタの選択に関する項を参照してください。

注意:

Enterprise Performance Packでのガベージ・コレクタのチューニングに問題がある場合は、My Oracle Supportに連絡してください。

Enterprise Performance Packでのツールの実行とライブラリの使用

一部のツールおよびライブラリは、Enterprise Performance Packで動作が異なるか、削除されています。(Enterprise Performance Packに含まれているその他のツールおよびライブラリは、JDK 8と同じように動作するはずです。)

次のJDK 8ツールは、Enterprise Performance Packでは動作が異なります

表1-2 Enterprise Performance Packで動作が異なるツール

JDK 8ツール Enterprise Performance Packでのツールの動作
java

Enterprise Performance Packには、JDK 17の複数の実行時オプションが含まれています。ただし、JDK 8の一部のオプションはEnterprise Performance Packで使用できません。「JVM実行時オプションの変更」を参照してください。

Enterprise Performance Packでは、Unified JVM Loggingが使用されます。これにより、JVMに関する詳細を出力するオプションが-Xlog構成に置き換わります。「JVM情報の出力」を参照してください。

JDK Mission Control (JMC) リアルタイムJMXモニタリングなど、様々な目的でJMCを使用できます。記録はJMC内から開始できませんが、シェルから作成したファイルを開くことはできます。
jcmd 使用可能なコマンドのリストに対してjcmd <pid> helpを実行します。
jdb

次のサービスアビリティ・エージェント・コネクタを使用したjdbの実行はサポートされていません:

  • SAPIDAttachingConnector
  • SACoreAttachingConnector
  • SADebugServerAttachingConnector
jsadebugd jsadebugdツールはサポートされていません。
サービスアビリティ・エージェント・スクリプト作成 サービスアビリティ・エージェントでは、JavaScriptサポートが提供されなくなりました。

注意:

  • Enterprise Performance Packではヘッドレス・システムのみがサポートされるため、次のツールはEnterprise Performance Packから削除されました: appletviewerjavapackagerjavawsjconsoleおよびjvisualvm
  • Enterprise Performance Packにmanページは含まれていません。

次のJDK 8ライブラリは、Enterprise Performance Packで動作が異なるか、サポートされていません:

表1-3 Enterprise Performance Packで動作が異なるか、サポートされていないライブラリ

JDK 8ライブラリ Enterprise Performance Packでのライブラリの動作
Abstract Window Toolkit (AWT) Enterprise Performance Packでは、常にAWTのヘッドレス実装が使用されます。

注意:

AWTには、環境がヘッドレスであるかどうかを示す2つのメソッド(GraphicsEnvironment.isHeadless()およびGraphicsEnvironment.isHeadlessInstance())が含まれています。一部のAWTメソッドは、環境がヘッドレスであるとHeadlessExceptionをスローします。
JavaFXSwingなどのGUIライブラリ Enterprise Performance Packはヘッドレス・システム用であるため、GUIライブラリはサポートされていません。

注意:

Enterprise Performance Packでのツールの実行やライブラリの使用で追加のヘルプが必要な場合は、My Oracle Supportに連絡してください。

Enterprise Performance Packのその他の相違点

Enterprise Performance Packの使用時に、次のような違いがある可能性があります:

例外メッセージ

Enterprise Performance Packで出力される例外メッセージが、JDK 8のものとは異なる場合があります。

バージョン文字列

Enterprise Performance Packバージョン文字列の形式が異なります。「Enterprise Performance Packバージョン文字列」を参照してください。

商用機能

Enterprise Performance Packでは、次のJava SE 8商用機能はサポートされていません:

  • リソース管理
  • 協調的メモリー管理

注意:

アプリケーション・クラス・データ共有(AppCDS)はJDK 8の商用機能ですが、Enterprise Performance PackではAppCDSを通常の機能として使用できます。

したがって、次のいずれかのコマンドライン・オプションを指定すると、Enterprise Performance Packはそれが無視されたという警告メッセージを出力します:

  • MemoryRestriction
  • ResourceManagement
  • ResourceManagementSampleInterval

アプリケーション・クラス・データ共有(AppCDS)

AppCDSを使用するために-XX:+UseAppCDSコマンドライン・オプションを指定する必要はありません。

モジュール・パスからクラスをアーカイブすることはできません。モジュール・システムはJDK 8の一部ではありません。また、動的CDSアーカイブ・ファイルを作成することもできません。