Java10 - 类数据共享

JEP 310 − 应用类-数据共享

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