1概要

このクイックチュートリアルでは、最新のJava 10リリースに伴うパフォーマンスの向上について説明します。

これらの改善は、JDK 10で実行されているすべてのアプリケーションに適用され、それらを活用するためにコードを変更する必要はありません。


2 G1

用パラレルフルGC

G1ガベージコレクタは、JDK 9以降のデフォルトのものです。ただし、G1のフルGCでは、シングルスレッドのマークスイープコンパクトアルゴリズムを使用しました。

これは、Java 10では


パラレルマークスイープ – コンパクトアルゴリズム


に変更されており、フルGC中の停止時間を効果的に短縮しています。


3アプリケーションクラス – データ共有

JDK 5で導入されたClass-Data Sharingは、一連のクラスを共有アーカイブファイルに事前処理し、実行時にメモリマップして起動時間を短縮し、複数のJVMが共有するときの動的メモリフットプリントを削減することができます。同じアーカイブファイル

CDSはブートストラップクラスローダーのみを許可し、機能はシステムクラスのみに制限されていました。アプリケーションCDS(AppCDS)はCDSを拡張して、組み込みシステムクラスローダー(別名、「アプリクラスローダー」)、組み込みプラットフォームクラスローダー、およびカスタムクラスローダーがアーカイブクラスをロードできるようにします。これにより、アプリケーションクラスでこの機能を使用できるようになります。

この機能を利用するには、次の手順に従います。

  • 1アーカイブするクラスのリストを取得する**

次のコマンドは、

__HelloWorld


アプリケーションによってロードされたクラスを

hello.lst__にダンプします。

$ java -Xshare:off -XX:+UseAppCDS -XX:DumpLoadedClassList=hello.lst \
    -cp hello.jar HelloWorld

  • 2 AppCDSアーカイブを作成する**

次のコマンドは、

__ hello.lst


as入力を使用して

__hello.jsを作成します。

$ java -Xshare:dump -XX:+UseAppCDS -XX:SharedClassListFile=hello.lst \
    -XX:SharedArchiveFile=hello.jsa -cp hello.jar

  • 3 AppCDSアーカイブを使用する**

次のコマンドは、

__ hello.jsa


as入力で


HelloWorld

__アプリケーションを開始します。

$ java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=hello.jsa \
    -cp hello.jar HelloWorld

  • AppCDSは、JDK 8およびJDK 9用のOracle JDKの商用機能でした。


4実験的なJavaベースのJITコンパイラ


Graal

は、HotSpot JVMと統合されたJavaで書かれた動的コンパイラです。高性能と拡張性に重点が置かれています。これは、JDK 9で導入された実験的なAOT(Ahead-of-Time)コンパイラの基礎でもあります。

JDK 10はGraalコンパイラをLinux/x64プラットフォームで実験的なJITコンパイラとして使用することを可能にします。

GraalをJITコンパイラとして有効にするには、javaコマンドラインで次のオプションを使用します。

-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

これは実験的な機能であり、既存のJITコンパイラよりもパフォーマンスが向上するとは限りません。


5結論

この簡単な記事では、Java 10のパフォーマンス向上機能に焦点を当てて検討しました。




  • «** 前へ