Java13 - 动态 CDS 存档

CDS,类数据共享是 JVM 的一项重要功能,可缩短应用程序加载的启动时间。 因为它允许在不同的 JVM 之间共享类元数据,所以它减少了启动时间和内存占用。 Java 10 通过提供 AppCDS 增强了 CDS,应用程序 CDS 使开发人员能够访问共享存档中的应用程序类。 Java 12 将 CDS 存档设置为默认值。

但创建 CDS 的过程非常乏味,因为开发人员必须对他们的应用程序进行多次试验,以创建一个类列表作为第一步,然后将该类列表转储到存档中。 然后这个存档可用于在 JVM 之间共享元数据。

从 Java13 开始,现在 java 有了动态存档。 现在开发人员可以在应用程序退出时生成共享存档。 因此不再需要试运行。

以下步骤展示了使用选项 -XX:ArchiveClassesAtExit 并传递存档名称在默认系统存档之上创建动态共享存档。

$java -XX:ArchiveClassesAtExit=sharedApp.jar -cp APITester.jar APITester

一旦生成共享存档,就可以使用 -XX:SharedArchiveFile 选项运行应用程序。

$java -XX:SharedArchiveFile=sharedApp.jar -cp APITester.jar APITester

示例

考虑以下示例 −

APITester.java

public class APITester {
   public static void main(String[] args) {
      System.out.println("Welcome to TutorialsPoint.");
   }   
}

编译并运行程序

$javac APITester.java

$jar cf APITester.jar APITester.class

$java -XX:ArchiveClassesAtExit=sharedApp.jsa -cp APITester.jar APITester

$java -XX:SharedArchiveFile=sharedApp.jsa -cp APITester.jar APITester

输出

Welcome to TutorialsPoint.