Since JDK-8348426, the AOTConfiguration file format is changed from a text file into a binary file. The resolved Class/Field/Method constant pool entries are missing from the config file.
In the follow example, you can see the number of resolved classes and methods are significantly lower in the "AOT workflow vs the classical "CDS" workflow:
AOT
Class CP entries = 35502, archived = 5974 ( 16.8%), reverted = 0
Method CP entries = 6650, archived = 6632 ( 99.7%), reverted = 18
CDS
Class CP entries = 35102, archived = 10392 ( 29.6%), reverted = 0
Method CP entries = 10551, archived = 10527 ( 99.8%), reverted = 24
============
$ java -XX:AOTMode=record -XX:AOTConfiguration=jc.aotconfig com.sun.tools.javac.Main -d . HelloWorld.java
AOTConfiguration recorded: jc.aotconfig
$ java -XX:AOTMode=create -Xlog:cds -XX:AOTCache=jc.aot -XX:AOTConfiguration=jc.aotconfig com.sun.tools.javac.Main -d . HelloWorld.java
[...]
[0.964s][info][cds] Class CP entries = 35502, archived = 5974 ( 16.8%), reverted = 0
[0.964s][info][cds] Field CP entries = 20197, archived = 4078 ( 20.2%), reverted = 0
[0.964s][info][cds] Method CP entries = 6650, archived = 6632 ( 99.7%), reverted = 18
[0.964s][info][cds] Indy CP entries = 212, archived = 212 (100.0%), reverted = 0
[0.964s][info][cds] Platform loader initiated classes = 654
[0.964s][info][cds] App loader initiated classes = 710
====================
$ java -Xshare:off -XX:DumpLoadedClassList=jc.classlist com.sun.tools.javac.Main -d . HelloWorld.java
$ java -XX:+AOTClassLinking -Xshare:dump -Xlog:cds -XX:SharedArchiveFile=jc.jsa -XX:SharedClassListFile=jc.classlist com.sun.tools.javac.Main -d . HelloWorld.java
[0.493s][info][cds] Class CP entries = 35102, archived = 10392 ( 29.6%), reverted = 0
[0.493s][info][cds] Field CP entries = 20061, archived = 5706 ( 28.4%), reverted = 0
[0.493s][info][cds] Method CP entries = 10551, archived = 10527 ( 99.8%), reverted = 24
[0.493s][info][cds] Indy CP entries = 207, archived = 207 (100.0%), reverted = 0
[0.493s][info][cds] Platform loader initiated classes = 647
[0.493s][info][cds] App loader initiated classes = 703
In the follow example, you can see the number of resolved classes and methods are significantly lower in the "AOT workflow vs the classical "CDS" workflow:
AOT
Class CP entries = 35502, archived = 5974 ( 16.8%), reverted = 0
Method CP entries = 6650, archived = 6632 ( 99.7%), reverted = 18
CDS
Class CP entries = 35102, archived = 10392 ( 29.6%), reverted = 0
Method CP entries = 10551, archived = 10527 ( 99.8%), reverted = 24
============
$ java -XX:AOTMode=record -XX:AOTConfiguration=jc.aotconfig com.sun.tools.javac.Main -d . HelloWorld.java
AOTConfiguration recorded: jc.aotconfig
$ java -XX:AOTMode=create -Xlog:cds -XX:AOTCache=jc.aot -XX:AOTConfiguration=jc.aotconfig com.sun.tools.javac.Main -d . HelloWorld.java
[...]
[0.964s][info][cds] Class CP entries = 35502, archived = 5974 ( 16.8%), reverted = 0
[0.964s][info][cds] Field CP entries = 20197, archived = 4078 ( 20.2%), reverted = 0
[0.964s][info][cds] Method CP entries = 6650, archived = 6632 ( 99.7%), reverted = 18
[0.964s][info][cds] Indy CP entries = 212, archived = 212 (100.0%), reverted = 0
[0.964s][info][cds] Platform loader initiated classes = 654
[0.964s][info][cds] App loader initiated classes = 710
====================
$ java -Xshare:off -XX:DumpLoadedClassList=jc.classlist com.sun.tools.javac.Main -d . HelloWorld.java
$ java -XX:+AOTClassLinking -Xshare:dump -Xlog:cds -XX:SharedArchiveFile=jc.jsa -XX:SharedClassListFile=jc.classlist com.sun.tools.javac.Main -d . HelloWorld.java
[0.493s][info][cds] Class CP entries = 35102, archived = 10392 ( 29.6%), reverted = 0
[0.493s][info][cds] Field CP entries = 20061, archived = 5706 ( 28.4%), reverted = 0
[0.493s][info][cds] Method CP entries = 10551, archived = 10527 ( 99.8%), reverted = 24
[0.493s][info][cds] Indy CP entries = 207, archived = 207 (100.0%), reverted = 0
[0.493s][info][cds] Platform loader initiated classes = 647
[0.493s][info][cds] App loader initiated classes = 703
- caused by
-
JDK-8348426 Generate binary file for -XX:AOTMode=record -XX:AOTConfiguration=file
-
- Resolved
-
- links to
-
Commit(master) openjdk/jdk/a71f621a
-
Review(master) openjdk/jdk/24434