08、Java10 新特性 - 应用程序类数据共享

当JVM 启动时,它会将类加载到内存中作为初步步骤。如果有多个具有多个类的 jar,则第一个请求会出现明显的滞后。在无服务器架构中,这种延迟会延迟启动时间,这是此类架构中的关键操作。应用程序类数据共享概念有助于减少应用程序的启动时间。Java 具有现有的 CDS(类数据共享)功能。通过应用程序类数据共享,Java 10 允许将应用程序类放在共享存档中。这通过跨多个 Java 进程共享公共类元数据来减少应用程序启动和占用空间。

应用程序类数据共享的过程

应用程序类数据共享 一共 有 3 个步骤。

  • 创建要存档的类列表:使用 Java 启动器创建位于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