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