From 88fd064b69bf7429d862b02f1301d42475ea2530 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 2 Dec 2016 15:57:33 +0100 Subject: [PATCH] properly calculate max heap size for a forked javac process (IDEA-164402) --- .../jetbrains/jps/incremental/java/JavaBuilder.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java index 864e29d5e4f2..46dea9b6a6aa 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java @@ -498,10 +498,12 @@ public class JavaBuilder extends ModuleLevelBuilder { } private static int getExternalJavacHeapSize(CompileContext context) { - final JpsProject project = context.getProjectDescriptor().getProject(); - final JpsJavaCompilerConfiguration config = JpsJavaExtensionService.getInstance().getOrCreateCompilerConfiguration(project); - final JpsJavaCompilerOptions options = config.getCurrentCompilerOptions(); - return options.MAXIMUM_HEAP_SIZE; + //final JpsProject project = context.getProjectDescriptor().getProject(); + //final JpsJavaCompilerConfiguration config = JpsJavaExtensionService.getInstance().getOrCreateCompilerConfiguration(project); + //final JpsJavaCompilerOptions options = config.getCurrentCompilerOptions(); + //return options.MAXIMUM_HEAP_SIZE; + final int maxMbytes = (int)Runtime.getRuntime().maxMemory() / 1048576; + return Math.max(maxMbytes * 75 / 100, 256); // minimum 256 Mb, maximum 75% from JPS max heap size } @Nullable