From 520c05e1fa9157c01a3d0894c47c71db97ec8864 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Thu, 3 Aug 2017 12:43:37 -0700 Subject: [PATCH] Build: Fork javac to avoid GC overhead Compiling all of elasticsearch classes in one jvm, which is shared with all of the loaded classes of gradle, can trip gc overhead limits. This commit re-enables forking javac. --- .../groovy/org/elasticsearch/gradle/BuildPlugin.groovy | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy index b09195b93f807..4fa90853b169e 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy @@ -410,11 +410,10 @@ class BuildPlugin implements Plugin { project.afterEvaluate { project.tasks.withType(JavaCompile) { File gradleJavaHome = Jvm.current().javaHome - if (new File(project.javaHome).canonicalPath != gradleJavaHome.canonicalPath) { - options.fork = true - options.forkOptions.executable = new File(project.javaHome, 'bin/javac') - options.forkOptions.memoryMaximumSize = "1g" - } + // we fork because compiling lots of different classes in a shared jvm can eventually trigger GC overhead limitations + options.fork = true + options.forkOptions.executable = new File(project.javaHome, 'bin/javac') + options.forkOptions.memoryMaximumSize = "1g" if (project.targetCompatibility >= JavaVersion.VERSION_1_8) { // compile with compact 3 profile by default // NOTE: this is just a compile time check: does not replace testing with a compact3 JRE