Java 10 - クラスデータ共有
JEP 310 − アプリケーション クラス データ共有
JVM が起動すると、準備段階としてクラスがメモリにロードされます。複数のクラスを持つ複数の jar がある場合、最初のリクエストで明らかな遅延が発生します。サーバーレス アーキテクチャでは、このような遅延により起動時間が遅延する可能性があります。これは、このようなアーキテクチャでは重要な操作です。アプリケーション クラス データ共有の概念は、アプリケーションの起動時間を短縮するのに役立ちます。 Java には既存の CDS (Class-Data Sharing) 機能があります。 Java 10 では、アプリケーション クラス データの共有により、アプリケーション クラスを共有アーカイブに入れることができます。これにより、複数の Java プロセス間で共通のクラス メタデータを共有することにより、アプリケーションの起動とフットプリントが削減されます。
プロセス
アプリケーション クラスのデータ共有は 3 ステップのプロセスです。
- <リ>
アーカイブするクラスのリストを作成 − Java Launcher を使用して、welcome.jar にあるクラス Greeting.java のリスト welcome.lst を作成します。
$java -Xshare:off -XX:+UseAppCDS -XX:DumpLoadedClassList=welcome.lst -cp welcome.jar Greeting
- <リ>
AppCDS アーカイブの作成 − アプリケーション クラスのデータ共有に使用するクラスのリストをアーカイブします。
$java -Xshare:dump -XX:+UseAppCDS -XX:SharedClassListFile=welcome.lst -XX:SharedArchiveFile=welcome.jsa -cp welcome.jar
- <リ>
AppCDS アーカイブを使用 − Java ランチャーの使用中に AppCDS アーカイブを使用します。
$java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=welcome.jsa -cp welcome.jar Greeting
Java