From e918734e8fb9f2090f22ffe46d86791f46bbf1ff Mon Sep 17 00:00:00 2001 From: Jason Pearson Date: Sat, 21 Sep 2024 17:26:40 -0400 Subject: [PATCH] improve settings, include some reasoning that is not in the metaspace blog post --- gradle.properties | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index b1b2f7bda8..e2d6e09038 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,8 +8,23 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Ensure important default jvmargs aren't overwritten. See https://github.com/gradle/gradle/issues/19750 -# For more information about how the memory options were chosen see https://www.jasonpearson.dev/metaspace-in-jvm-builds/ -org.gradle.jvmargs=-Dfile.encoding=UTF-8 -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=1 -XX:ReservedCodeCacheSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:+UnlockExperimentalVMOptions -Xmx4g -Xms4g -XX:MetaspaceSize=256m +# +# For more information about how Gradle memory options were chosen: +# - Metaspace See https://www.jasonpearson.dev/metaspace-in-jvm-builds/ +# - SoftRefLRUPolicyMSPerMB would default to 1000 which with a 4gb heap translates to ~51 minutes. +# A value of 1 means ~4 seconds before SoftRefs can be collected, which means its realistic to +# collect them as needed during a build that should take seconds to minutes. +# - CodeCache normally defaults to a very small size. Increasing it from platform defaults of 32-48m +# because of how many classes can be loaded into memory and then cached as native compiled code +# for a small speed boost. +org.gradle.jvmargs=-Dfile.encoding=UTF-8 -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=1 -XX:ReservedCodeCacheSize=256m -XX:+HeapDumpOnOutOfMemoryError -Xmx4g -Xms4g + +# For more information about how Kotlin Daemon memory options were chosen: +# - Kotlin JVM args only inherit Xmx, ReservedCodeCache, and MaxMetaspace. Since we are specifying +# other args we need to specify all of them here. +# - We're using the Kotlin Gradle Plugin's default value for ReservedCodeCacheSize, if we do not then +# the Gradle JVM arg value for ReservedCodeCacheSize will be used. +kotlin.daemon.jvmargs=-Dfile.encoding=UTF-8 -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=1 -XX:ReservedCodeCacheSize=320m -XX:+HeapDumpOnOutOfMemoryError -Xmx4g -Xms4g # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit