Java 10のアプリケーションクラスデータ共有(AppCDS)で起動高速化
JEP 310 - アプリケーションクラスデータ共有
JVM起動時、クラスをメモリにロードする前処理ステップがあります。複数のJARに複数のクラスがある場合、最初のリクエストで明らかな遅延が発生します。サーバーレスアーキテクチャでは、このような遅延がブートタイムを遅らせ、クリティカルな操作に影響します。アプリケーションクラスデータ共有の概念は、アプリケーションの起動時間を短縮するのに役立ちます。Javaには既存のCDS(クラスデータ共有)機能がありますが、アプリケーションクラスデータ共有では、Java 10でアプリケーションクラスを共有アーカイブに格納できるようになりました。これにより、共通のクラスメタデータを複数のJavaプロセス間で共有することで、アプリケーションの起動時間とフットプリントを削減します。
プロセス(3ステップ)
ステップ1:アーカイブするクラスのリストを作成
welcome.jarにあるGreeting.javaクラスのリストwelcome.lstをJavaランチャーで作成します。
$ java -Xshare:off -XX:+UseAppCDS -XX:DumpLoadedClassList=welcome.lst -cp welcome.jar Greeting
ステップ2:AppCDSアーカイブを作成
アプリケーションクラスデータ共有で使用するクラスリストをアーカイブします。
$ java -Xshare:dump -XX:+UseAppCDS -XX:SharedClassListFile=welcome.lst -XX:SharedArchiveFile=welcome.jsa -cp welcome.jar
ステップ3:AppCDSアーカイブを使用
JavaランチャーでAppCDSアーカイブを使用します。
$ java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=welcome.jsa -cp welcome.jar Greeting
Java
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
- Java Vectorの理解:使い方、特徴、ArrayListとの比較
- Java 10のアプリケーションクラスデータ共有(AppCDS)で起動高速化