diff --git a/core/creator/src/main/java/io/quarkus/creator/phase/nativeimage/NativeImagePhase.java b/core/creator/src/main/java/io/quarkus/creator/phase/nativeimage/NativeImagePhase.java index 9d9d1ead98354..4786ac4e2e327 100644 --- a/core/creator/src/main/java/io/quarkus/creator/phase/nativeimage/NativeImagePhase.java +++ b/core/creator/src/main/java/io/quarkus/creator/phase/nativeimage/NativeImagePhase.java @@ -407,7 +407,7 @@ public void provideOutcome(AppCreator ctx) throws AppCreatorException { if (additionalBuildArgs != null) { command.addAll(additionalBuildArgs); } - command.add("-H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime"); //the default collection policy results in full GC's 50% of the time + command.add("-H:InitialCollectionPolicy=\"com.oracle.svm.core.genscavenge.CollectionPolicy\\$BySpaceAndTime\""); //the default collection policy results in full GC's 50% of the time command.add("-jar"); command.add(runnerJarName); //https://github.com/oracle/graal/issues/660 diff --git a/docs/src/main/asciidoc/native-and-ssl-guide.adoc b/docs/src/main/asciidoc/native-and-ssl-guide.adoc index 198959b63b62a..3780df7d38d56 100644 --- a/docs/src/main/asciidoc/native-and-ssl-guide.adoc +++ b/docs/src/main/asciidoc/native-and-ssl-guide.adoc @@ -53,7 +53,7 @@ So, yes, it appears it works out of the box and this guide is pretty useless. It's not. The magic happens when building the native executable: ``` -[INFO] [io.quarkus.creator.phase.nativeimage.NativeImagePhase] /opt/graalvm/bin/native-image -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dcom.sun.xml.internal.bind.v2.bytecode.ClassTailor.noOptimize=true -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime -jar rest-client-1.0-SNAPSHOT-runner.jar -J-Djava.util.concurrent.ForkJoinPool.common.parallelism=1 -H:+PrintAnalysisCallTree -H:EnableURLProtocols=http,https --enable-all-security-services -H:-SpawnIsolates -H:+JNI --no-server -H:-UseServiceLoaderFeature -H:+StackTrace +[INFO] [io.quarkus.creator.phase.nativeimage.NativeImagePhase] /opt/graalvm/bin/native-image -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dcom.sun.xml.internal.bind.v2.bytecode.ClassTailor.noOptimize=true -H:InitialCollectionPolicy="com.oracle.svm.core.genscavenge.CollectionPolicy\$BySpaceAndTime" -jar rest-client-1.0-SNAPSHOT-runner.jar -J-Djava.util.concurrent.ForkJoinPool.common.parallelism=1 -H:+PrintAnalysisCallTree -H:EnableURLProtocols=http,https --enable-all-security-services -H:-SpawnIsolates -H:+JNI --no-server -H:-UseServiceLoaderFeature -H:+StackTrace ``` The important elements are these 3 options: @@ -114,7 +114,7 @@ And build again: If you check carefully the native executable build options, you can see that the SSL related options are gone: ``` -[INFO] [io.quarkus.creator.phase.nativeimage.NativeImagePhase] /opt/graalvm/bin/native-image -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dcom.sun.xml.internal.bind.v2.bytecode.ClassTailor.noOptimize=true -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime -jar rest-client-1.0-SNAPSHOT-runner.jar -J-Djava.util.concurrent.ForkJoinPool.common.parallelism=1 -H:+PrintAnalysisCallTree -H:EnableURLProtocols=http -H:-SpawnIsolates -H:-JNI --no-server -H:-UseServiceLoaderFeature -H:+StackTrace +[INFO] [io.quarkus.creator.phase.nativeimage.NativeImagePhase] /opt/graalvm/bin/native-image -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dcom.sun.xml.internal.bind.v2.bytecode.ClassTailor.noOptimize=true -H:InitialCollectionPolicy="com.oracle.svm.core.genscavenge.CollectionPolicy\$BySpaceAndTime" -jar rest-client-1.0-SNAPSHOT-runner.jar -J-Djava.util.concurrent.ForkJoinPool.common.parallelism=1 -H:+PrintAnalysisCallTree -H:EnableURLProtocols=http -H:-SpawnIsolates -H:-JNI --no-server -H:-UseServiceLoaderFeature -H:+StackTrace ``` And we end up with: diff --git a/docs/src/main/asciidoc/performance-measure.adoc b/docs/src/main/asciidoc/performance-measure.adoc index d612622c3cbee..aa16868c2535a 100644 --- a/docs/src/main/asciidoc/performance-measure.adoc +++ b/docs/src/main/asciidoc/performance-measure.adoc @@ -198,7 +198,7 @@ We prefer listing services explicitly as it produces better optimised binaries. The default in GraalVM seems meant to optimise for short lived processes. Quarkus defaults to server applications, so we switch to a better default by setting - `-H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime`. + `-H:InitialCollectionPolicy="com.oracle.svm.core.genscavenge.CollectionPolicy\$BySpaceAndTime"`. === Others ...