quarkus: [AppCDS] -Dquarkus.package.create-appcds=true -Dquarkus.package.type=fast-jar seems broken with source/compiler 11
Describe the bug
I’ve been playing with application class data sharing according to this guide using getting-started. What surprised me that by default (fast-jar
package type), the gain on using the AppCDS archive for running the app was nearly negligible:
Base line (only JDK CDS, No AppCDS):
$ /usr/lib/jvm/java-17-openjdk/bin/java -Xlog:cds -jar quarkus-run.jar
[0.005s][info][cds] trying to map /usr/lib/jvm/java-17-openjdk-17.0.6.0.10-1.fc37.x86_64/lib/server/classes.jsa
[0.005s][info][cds] Opened archive /usr/lib/jvm/java-17-openjdk-17.0.6.0.10-1.fc37.x86_64/lib/server/classes.jsa.
[0.005s][info][cds] Archive was created with UseCompressedOops = 1, UseCompressedClassPointers = 1
[0.005s][info][cds] Core region alignment: 4096
[0.005s][info][cds] Reserved archive_space_rs [0x0000000800000000 - 0x0000000800c00000] (12582912) bytes
[0.005s][info][cds] Reserved class_space_rs [0x0000000800c00000 - 0x0000000840c00000] (1073741824) bytes
[0.005s][info][cds] Mapped static region #0 at base 0x0000000800000000 top 0x0000000800458000 (ReadWrite)
[0.005s][info][cds] Mapped static region #1 at base 0x0000000800458000 top 0x0000000800be1000 (ReadOnly)
[0.005s][info][cds] CDS archive was created with max heap size = 16016M, and the following configuration:
[0.005s][info][cds] narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds] narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds] heap range = [0x00000003d7000000 - 0x00000007c0000000]
[0.005s][info][cds] The current max heap size = 16016M, HeapRegion::GrainBytes = 8388608
[0.005s][info][cds] narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds] narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds] heap range = [0x0000000417000000 - 0x0000000800000000]
[0.005s][info][cds] CDS heap data needs to be relocated to the end of the runtime heap to reduce fragmentation
[0.005s][info][cds] CDS heap data relocation delta = 1073741824 bytes
[0.005s][info][cds] Trying to map heap data: region[3] at 0x00000007ff800000, size = 536576 bytes
[0.005s][info][cds] Trying to map heap data: region[5] at 0x00000007ff000000, size = 483328 bytes
[0.005s][info][cds] optimized module handling: enabled
[0.005s][info][cds] full module graph: enabled
[0.005s][info][cds] use_full_module_graph = true; java.base = 0x00000008004516a0
[0.006s][info][cds] patching heap embedded pointers
[0.006s][info][cds] Mapped static region #2 at base 0x00007f32bff6d000 top 0x00007f32bffa5000 (Bitmap)
[0.006s][info][cds] Unmapping region #2 at base 0x00007f32bff6d000 (Bitmap)
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2023-04-25 11:03:34,528 INFO [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT on JVM (powered by Quarkus 999-SNAPSHOT) started in 0.564s. Listening on: http://0.0.0.0:8080
2023-04-25 11:03:34,555 INFO [io.quarkus] (main) Profile prod activated.
2023-04-25 11:03:34,555 INFO [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx]
With AppCDS created using -Dquarkus.package.create-appcds=true -Dquarkus.package.type=fast-jar
during the maven build:
$ /usr/lib/jvm/java-17-openjdk/bin/java -Xlog:cds -Xshare:on -XX:SharedArchiveFile=app-cds.jsa -jar quarkus-run.jar
[0.005s][info][cds] trying to map app-cds.jsa
[0.005s][info][cds] Opened archive app-cds.jsa.
[0.005s][info][cds] Archive was created with UseCompressedOops = 1, UseCompressedClassPointers = 1
[0.005s][info][cds] Core region alignment: 4096
[0.005s][info][cds] Reserved archive_space_rs [0x0000000800000000 - 0x0000000801000000] (16777216) bytes
[0.005s][info][cds] Reserved class_space_rs [0x0000000801000000 - 0x0000000841000000] (1073741824) bytes
[0.005s][info][cds] Mapped static region #0 at base 0x0000000800000000 top 0x00000008005c8000 (ReadWrite)
[0.005s][info][cds] Mapped static region #1 at base 0x00000008005c8000 top 0x0000000800f50000 (ReadOnly)
[0.005s][info][cds] CDS archive was created with max heap size = 16016M, and the following configuration:
[0.005s][info][cds] narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds] narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds] heap range = [0x00000003d7000000 - 0x00000007c0000000]
[0.005s][info][cds] The current max heap size = 16016M, HeapRegion::GrainBytes = 8388608
[0.005s][info][cds] narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds] narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds] heap range = [0x0000000417000000 - 0x0000000800000000]
[0.005s][info][cds] CDS heap data needs to be relocated to the end of the runtime heap to reduce fragmentation
[0.005s][info][cds] CDS heap data relocation delta = 1073741824 bytes
[0.005s][info][cds] Trying to map heap data: region[3] at 0x00000007ff800000, size = 659456 bytes
[0.005s][info][cds] Trying to map heap data: region[5] at 0x00000007ff000000, size = 593920 bytes
[0.005s][info][cds] optimized module handling: enabled
[0.005s][info][cds] full module graph: enabled
[0.005s][info][cds] use_full_module_graph = true; java.base = 0x00000008005c1ea0
[0.005s][info][cds] patching heap embedded pointers
[0.006s][info][cds] Mapped static region #2 at base 0x00007efe816a1000 top 0x00007efe816e8000 (Bitmap)
[0.006s][info][cds] Unmapping region #2 at base 0x00007efe816a1000 (Bitmap)
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2023-04-25 11:06:08,414 INFO [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT on JVM (powered by Quarkus 999-SNAPSHOT) started in 0.514s. Listening on: http://0.0.0.0:8080
2023-04-25 11:06:08,435 INFO [io.quarkus] (main) Profile prod activated.
2023-04-25 11:06:08,435 INFO [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx]
So we have 0.564s
for the baseline vs. 0.514s
with AppCDS (difference almost considered noise). I’d have expected a larger reduction on boot time. And indeed, once we switch to -Dquarkus.package.type=uber-jar
we get the expected boost: 0.343s
(~200ms reduction as compared to baseline):
$ /usr/lib/jvm/java-17-openjdk/bin/java -Xlog:cds -Xshare:on -XX:SharedArchiveFile=app-cds.jsa -jar getting-started-1.0.0-SNAPSHOT-runner.jar
[0.005s][info][cds] trying to map app-cds.jsa
[0.005s][info][cds] Opened archive app-cds.jsa.
[0.005s][info][cds] Archive was created with UseCompressedOops = 1, UseCompressedClassPointers = 1
[0.005s][info][cds] Core region alignment: 4096
[0.005s][info][cds] Reserved archive_space_rs [0x0000000800000000 - 0x0000000801800000] (25165824) bytes
[0.005s][info][cds] Reserved class_space_rs [0x0000000801800000 - 0x0000000841800000] (1073741824) bytes
[0.005s][info][cds] Mapped static region #0 at base 0x0000000800000000 top 0x0000000800939000 (ReadWrite)
[0.005s][info][cds] Mapped static region #1 at base 0x0000000800939000 top 0x00000008017fc000 (ReadOnly)
[0.005s][info][cds] CDS archive was created with max heap size = 16016M, and the following configuration:
[0.005s][info][cds] narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds] narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds] heap range = [0x00000003d7000000 - 0x00000007c0000000]
[0.005s][info][cds] The current max heap size = 16016M, HeapRegion::GrainBytes = 8388608
[0.005s][info][cds] narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 0
[0.005s][info][cds] narrow_oop_mode = 1, narrow_oop_base = 0x0000000000000000, narrow_oop_shift = 3
[0.005s][info][cds] heap range = [0x0000000417000000 - 0x0000000800000000]
[0.005s][info][cds] CDS heap data needs to be relocated to the end of the runtime heap to reduce fragmentation
[0.005s][info][cds] CDS heap data relocation delta = 1073741824 bytes
[0.005s][info][cds] Trying to map heap data: region[3] at 0x00000007ff800000, size = 1036288 bytes
[0.005s][info][cds] Trying to map heap data: region[5] at 0x00000007ff000000, size = 856064 bytes
[0.005s][info][cds] optimized module handling: enabled
[0.005s][info][cds] full module graph: enabled
[0.005s][info][cds] use_full_module_graph = true; java.base = 0x0000000800932888
[0.005s][info][cds] patching heap embedded pointers
[0.005s][info][cds] Mapped static region #2 at base 0x00007f8a208a6000 top 0x00007f8a20915000 (Bitmap)
[0.007s][info][cds] Unmapping region #2 at base 0x00007f8a208a6000 (Bitmap)
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2023-04-25 11:11:57,978 INFO [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT on JVM (powered by Quarkus 999-SNAPSHOT) started in 0.343s. Listening on: http://0.0.0.0:8080
2023-04-25 11:11:58,001 INFO [io.quarkus] (main) Profile prod activated.
2023-04-25 11:11:58,001 INFO [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx]
Expected behavior
-Dquarkus.package.type=fast-jar
and -Dquarkus.package.create-appcds=true
amounts to about the same amount of boot time reduction than -Dquarkus.package.type=uber-jar
does (~200ms for the getting-started example in my case).
Actual behavior
Boot time reduction of the app is negligible as compared to JDK CDS (the default for JDK 17+ builds these days).
How to Reproduce?
Reproducer:
- Get the
getting-started
sample app.cd getting-started
. JAVA_HOME=/usr/lib/jvm/java-17-openjdk ./mvnw -Dquarkus.platform.version=999-SNAPSHOT -Dquarkus.package.create-appcds=true -Dquarkus.package.type=fast-jar clean package
cd target/quarkus-app
/usr/lib/jvm/java-17-openjdk/bin/java -Xlog:cds -Xshare:on -XX:SharedArchiveFile=app-cds.jsa -jar quarkus-run.jar
- Observe the negligible bootup boost as compared to without the
-Xshare:on -XX:SharedArchiveFile=app-cds.jsa
options.
Output of uname -a
or ver
No response
Output of java -version
Red_Hat-17.0.6.0.10-1.fc37
GraalVM version (if different from Java)
No response
Quarkus version or git rev
6c7268b90a6f0d76cea39c3ad4520526e66275d9
Build tool (ie. output of mvnw --version
or gradlew --version
)
maven
Additional information
When building with -X
(debug logging) the AppCDSBuildStep
shows many CNFE for vertex and others, which seems to indicate a classpath problem?
[DEBUG] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] Launching command: '/usr/lib/jvm/java-17-openjdk-17.0.6.0.10-1.fc37.x86_64/bin/java -XX:DumpLoadedClassList=classes.lst -Dquarkus.appcds.generate=true -jar /home/sgehwolf/Documents/openjdk/quarkus/quarkus-quickstarts/getting-started/target/quarkus-app/quarkus-run.jar' to create 'classes.lst' file.
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2023-04-25 10:54:27,198 WARN [io.qua.config] (main) Unrecognized configuration key "quarkus.appcds.generate" was provided; it will be ignored; verify that the dependency extension for this configuration is set or that you did not make a typo
2023-04-25 10:54:32,509 INFO [io.quarkus] (main) getting-started stopped in 0.001s
[DEBUG] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] 'classes.lst' successfully created.
[INFO] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] Launching AppCDS creation process.
[DEBUG] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] Launching command: '/usr/lib/jvm/java-17-openjdk-17.0.6.0.10-1.fc37.x86_64/bin/java -Xshare:dump -XX:SharedClassListFile=/home/sgehwolf/Documents/openjdk/quarkus/quarkus-quickstarts/getting-started/target/appcds/classes.lst -XX:SharedArchiveFile=app-cds.jsa --class-path quarkus-run.jar' to create final AppCDS.
[0.109s][warning][cds] resolve_indy for class io/smallrye/config/KeyMap has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/KeyMap
[0.140s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingProvider$Builder has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingProvider$Builder
[0.150s][warning][cds] Preload Warning: Cannot find jdk/proxy1/$Proxy0
[0.151s][warning][cds] Preload Warning: Cannot find jdk/proxy1/$Proxy4
[0.159s][warning][cds] resolve_indy for class io/smallrye/config/KeyMap has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/KeyMap
[0.159s][warning][cds] resolve_indy for class io/smallrye/config/KeyMap has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/KeyMap
[0.159s][warning][cds] resolve_indy for class io/smallrye/config/KeyMap has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/KeyMap
[0.162s][warning][cds] resolve_indy for class io/smallrye/common/classloader/ClassPathUtils has encountered exception: java.lang.NoClassDefFoundError io/smallrye/common/classloader/ClassPathUtils
[0.180s][warning][cds] resolve_indy for class io/smallrye/config/common/utils/ConfigSourceUtil has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/common/utils/ConfigSourceUtil
[0.180s][warning][cds] resolve_indy for class io/smallrye/common/classloader/ClassPathUtils has encountered exception: java.lang.NoClassDefFoundError io/smallrye/common/classloader/ClassPathUtils
[0.182s][warning][cds] resolve_indy for class io/smallrye/config/EnvConfigSource has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/EnvConfigSource
[0.183s][warning][cds] resolve_indy for class io/smallrye/config/SysPropConfigSource has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SysPropConfigSource
[0.183s][warning][cds] resolve_indy for class io/smallrye/config/SysPropConfigSource has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SysPropConfigSource
[0.184s][warning][cds] resolve_indy for class io/smallrye/config/ProfileConfigSourceInterceptor has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ProfileConfigSourceInterceptor
[0.184s][warning][cds] resolve_indy for class io/smallrye/config/SmallRyeConfig$ConfigSources has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SmallRyeConfig$ConfigSources
[0.190s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingProvider has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingProvider
[0.190s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingLoader has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingLoader
[0.191s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.191s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.191s][warning][cds] resolve_indy for class io/smallrye/common/expression/Expression has encountered exception: java.lang.NoClassDefFoundError io/smallrye/common/expression/Expression
[0.191s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.191s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.191s][warning][cds] resolve_indy for class io/smallrye/config/SmallRyeConfig has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SmallRyeConfig
[0.192s][warning][cds] resolve_indy for class io/quarkus/runtime/configuration/ConfigUtils has encountered exception: java.lang.NoClassDefFoundError io/quarkus/runtime/configuration/ConfigUtils
[0.192s][warning][cds] resolve_indy for class io/smallrye/config/SmallRyeConfig has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SmallRyeConfig
[0.193s][warning][cds] resolve_indy for class io/quarkus/runtime/configuration/ConfigUtils has encountered exception: java.lang.NoClassDefFoundError io/quarkus/runtime/configuration/ConfigUtils
[0.194s][warning][cds] resolve_indy for class io/smallrye/config/SmallRyeConfigProviderResolver has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/SmallRyeConfigProviderResolver
[0.249s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ArcContainerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ArcContainerImpl
[0.249s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ArcContainerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ArcContainerImpl
[0.250s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ArcContainerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ArcContainerImpl
[0.250s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ArcContainerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ArcContainerImpl
[0.250s][warning][cds] resolve_indy for class org/slf4j/impl/Slf4jLoggerFactory has encountered exception: java.lang.NoClassDefFoundError org/slf4j/impl/Slf4jLoggerFactory
[0.250s][warning][cds] resolve_indy for class io/quarkus/arc/impl/Qualifiers has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/Qualifiers
[0.251s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ArcContainerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ArcContainerImpl
[0.251s][warning][cds] resolve_indy for class io/quarkus/arc/impl/EventImpl$Notifier has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/EventImpl$Notifier
[0.252s][warning][cds] resolve_indy for class io/quarkus/arc/impl/EventImpl$ObserverExceptionHandler has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/EventImpl$ObserverExceptionHandler
[0.252s][warning][cds] resolve_indy for class io/quarkus/arc/impl/BeanManagerImpl has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/BeanManagerImpl
[0.252s][warning][cds] resolve_indy for class io/quarkus/resteasy/reactive/server/runtime/ResteasyReactiveRecorder has encountered exception: java.lang.NoClassDefFoundError io/quarkus/resteasy/reactive/server/runtime/ResteasyReactiveRecorder
[0.253s][warning][cds] resolve_indy for class jakarta/ws/rs/ext/FactoryFinder has encountered exception: java.lang.NoClassDefFoundError jakarta/ws/rs/ext/FactoryFinder
[0.254s][warning][cds] resolve_indy for class org/jboss/resteasy/reactive/server/core/startup/RuntimeMappingDeployment has encountered exception: java.lang.NoClassDefFoundError org/jboss/resteasy/reactive/server/core/startup/RuntimeMappingDeployment
[0.254s][warning][cds] resolve_indy for class org/jboss/resteasy/reactive/server/core/startup/RuntimeMappingDeployment has encountered exception: java.lang.NoClassDefFoundError org/jboss/resteasy/reactive/server/core/startup/RuntimeMappingDeployment
[0.254s][warning][cds] resolve_indy for class org/jboss/resteasy/reactive/server/mapping/RequestMapper has encountered exception: java.lang.NoClassDefFoundError org/jboss/resteasy/reactive/server/mapping/RequestMapper
[0.254s][warning][cds] resolve_indy for class org/jboss/resteasy/reactive/server/mapping/RequestMapper has encountered exception: java.lang.NoClassDefFoundError org/jboss/resteasy/reactive/server/mapping/RequestMapper
[0.254s][warning][cds] resolve_indy for class org/jboss/resteasy/reactive/server/core/startup/RuntimeDeploymentManager has encountered exception: java.lang.NoClassDefFoundError org/jboss/resteasy/reactive/server/core/startup/RuntimeDeploymentManager
[0.255s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.255s][warning][cds] resolve_indy for class io/smallrye/config/ConfigMappingContext has encountered exception: java.lang.NoClassDefFoundError io/smallrye/config/ConfigMappingContext
[0.263s][warning][cds] resolve_indy for class org/jboss/threads/Version has encountered exception: java.lang.NoClassDefFoundError org/jboss/threads/Version
[0.275s][warning][cds] resolve_indy for class io/smallrye/context/impl/DefaultValues has encountered exception: java.lang.NoClassDefFoundError io/smallrye/context/impl/DefaultValues
[0.277s][warning][cds] resolve_indy for class io/vertx/core/spi/ExecutorServiceFactory has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/spi/ExecutorServiceFactory
[0.277s][warning][cds] resolve_indy for class io/vertx/core/file/impl/FileCache has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/file/impl/FileCache
[0.278s][warning][cds] resolve_indy for class io/vertx/core/impl/btc/BlockedThreadChecker has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/btc/BlockedThreadChecker
[0.278s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.281s][warning][cds] resolve_indy for class io/vertx/core/eventbus/impl/DefaultSerializableChecker has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/eventbus/impl/DefaultSerializableChecker
[0.281s][warning][cds] resolve_indy for class io/vertx/core/eventbus/EventBus has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/eventbus/EventBus
[0.282s][warning][cds] resolve_indy for class io/vertx/core/eventbus/impl/CodecManager has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/eventbus/impl/CodecManager
[0.282s][warning][cds] resolve_indy for class io/vertx/core/eventbus/impl/CodecManager has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/eventbus/impl/CodecManager
[0.282s][warning][cds] resolve_indy for class io/vertx/core/impl/VerticleManager has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VerticleManager
[0.282s][warning][cds] resolve_indy for class io/vertx/ext/web/impl/RouterState has encountered exception: java.lang.NoClassDefFoundError io/vertx/ext/web/impl/RouterState
[0.282s][warning][cds] resolve_indy for class io/vertx/mutiny/ext/web/Router has encountered exception: java.lang.NoClassDefFoundError io/vertx/mutiny/ext/web/Router
[0.282s][warning][cds] resolve_indy for class io/vertx/mutiny/ext/web/Router has encountered exception: java.lang.NoClassDefFoundError io/vertx/mutiny/ext/web/Router
[0.283s][warning][cds] resolve_indy for class io/vertx/mutiny/ext/web/Router has encountered exception: java.lang.NoClassDefFoundError io/vertx/mutiny/ext/web/Router
[0.283s][warning][cds] resolve_indy for class io/vertx/mutiny/ext/web/Router has encountered exception: java.lang.NoClassDefFoundError io/vertx/mutiny/ext/web/Router
[0.299s][warning][cds] resolve_indy for class io/quarkus/runtime/logging/LoggingSetupRecorder$3 has encountered exception: java.lang.NoClassDefFoundError io/quarkus/runtime/logging/LoggingSetupRecorder$3
[0.299s][warning][cds] resolve_indy for class io/quarkus/runtime/logging/LoggingSetupRecorder$3 has encountered exception: java.lang.NoClassDefFoundError io/quarkus/runtime/logging/LoggingSetupRecorder$3
[0.317s][warning][cds] resolve_indy for class io/quarkus/runtime/init/InitializationTaskRecorder has encountered exception: java.lang.NoClassDefFoundError io/quarkus/runtime/init/InitializationTaskRecorder
[0.319s][warning][cds] resolve_indy for class io/vertx/core/impl/btc/BlockedThreadChecker$1 has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/btc/BlockedThreadChecker$1
[0.320s][warning][cds] resolve_indy for class io/quarkus/arc/impl/EventImpl$Notifier has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/EventImpl$Notifier
[0.321s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ComputingCache has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ComputingCache
[0.321s][warning][cds] resolve_indy for class io/quarkus/arc/impl/ComputingCache has encountered exception: java.lang.NoClassDefFoundError io/quarkus/arc/impl/ComputingCache
[0.321s][warning][cds] resolve_indy for class io/vertx/core/impl/CloseFuture has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/CloseFuture
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/TaskQueue has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/TaskQueue
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/EventLoopContext has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/EventLoopContext
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.326s][warning][cds] resolve_indy for class io/vertx/core/impl/future/CompositeFutureImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/future/CompositeFutureImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/eventbus/impl/EventBusImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/eventbus/impl/EventBusImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/ContextBase has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/ContextBase
[0.327s][warning][cds] resolve_indy for class io/vertx/core/impl/ContextBase has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/ContextBase
[0.328s][warning][cds] resolve_indy for class io/vertx/core/impl/future/FutureBase has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/future/FutureBase
[0.329s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl
[0.329s][warning][cds] resolve_indy for class io/vertx/core/impl/VertxImpl$1$1 has encountered exception: java.lang.NoClassDefFoundError io/vertx/core/impl/VertxImpl$1$1
[INFO] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] AppCDS successfully created at: '/home/sgehwolf/Documents/openjdk/quarkus/quarkus-quickstarts/getting-started/target/quarkus-app/app-cds.jsa'.
[INFO] [io.quarkus.deployment.pkg.steps.AppCDSBuildStep] To ensure they are loaded properly, run the application jar from its directory and also add the '-XX:SharedArchiveFile=app-cds.jsa' JVM flag.
Moreover, make sure to use the exact same Java version (17.0.6) to run the application as was used to build it.
[DEBUG] [io.quarkus.builder] Finished step "io.quarkus.deployment.pkg.steps.AppCDSBuildStep#build" in 6551 ms
[DEBUG] [io.quarkus.builder] End step completed; 0 remaining
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 18 (17 by maintainers)
Commits related to this issue
- Add note about JDK version in AppCDS doc Relates to: https://github.com/quarkusio/quarkus/issues/32877#issuecomment-1734230601 — committed to geoand/quarkus by geoand 9 months ago
- Add note about JDK version in AppCDS doc Relates to: https://github.com/quarkusio/quarkus/issues/32877#issuecomment-1734230601 (cherry picked from commit b815ca5f5eb8a691fd8ac290a48bd3659fe67c5c) — committed to gsmet/quarkus by geoand 9 months ago
- Add note about JDK version in AppCDS doc Relates to: https://github.com/quarkusio/quarkus/issues/32877#issuecomment-1734230601 (cherry picked from commit b815ca5f5eb8a691fd8ac290a48bd3659fe67c5c) — committed to gsmet/quarkus by geoand 9 months ago
- Switch to uber-jar packaging fast-jar doesn't work well due to: https://github.com/quarkusio/quarkus/issues/32877 or https://bugs.openjdk.org/browse/JDK-8265602. We cannot use JDK 17 based AppCDS dum... — committed to jerboaa/quarkus-quickstarts by jerboaa a year ago
I just tried a Quarkus sample that uses RESTEasy Reactive and Jackson (which is known to be heavy at startup) and got something like the following:
Bytecode target: 11 Runtime: Java 17 AppCDS: No Startup: ~690ms
Bytecode target: 11 Runtime: Java 17 AppCDS: Yes Startup: ~620ms
Bytecode target: 17 Runtime: Java 17 AppCDS: No Startup: ~690ms
Bytecode target: 17 Runtime: Java 17 AppCDS: Yes Startup: ~520ms
Bytecode target: 21 Runtime: Java 21 AppCDS: No Startup: ~690ms
Bytecode target: 21 Runtime: Java 21 AppCDS: Yes Startup: ~490ms
So there is very big jump when the target bytecode version is 17 vs 11 and then things get even better with Java 21! I am pleasantly surprised.
Note: My Java 17 environment was
OpenJDK Runtime Environment Temurin-17.0.8.1+1 (build 17.0.8.1+1)
and my Java 21 environment wasOpenJDK Runtime Environment (build 21+35-2513)
while the machine used to test this was aLenovo P1 Gen3
runningUbuntu 22.04
.