Java 10 - 类数据共享
JEP 310 - 应用程序类-数据共享
当 JVM 启动时,它会将类加载到内存中作为初步步骤。如果有多个 jar 具有多个类,则第一个请求会出现明显的滞后。在无服务器架构中,这样的延迟会延迟启动时间,这是这种架构中的关键操作。应用程序类数据共享概念有助于减少应用程序的启动时间。 Java 具有现有的 CDS(类数据共享)功能。通过应用程序类数据共享,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