From f83f867cbd69d63e51f6a79d8b9a25943ad8cc02 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Mon, 19 Dec 2016 10:16:55 +0100 Subject: [PATCH] fix int overwlow in max heap size calculations for external javac process (follow-up for IDEA-164402) --- .../src/org/jetbrains/jps/incremental/java/JavaBuilder.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 a916acb28933..55326effd5de 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 @@ -504,7 +504,10 @@ public class JavaBuilder extends ModuleLevelBuilder { //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; + final int maxMbytes = (int)(Runtime.getRuntime().maxMemory() / 1048576L); + if (maxMbytes < 0) { + return -1; // in case of int overflow, return -1 to let VM choose the heap size + } return Math.max(maxMbytes * 75 / 100, 256); // minimum 256 Mb, maximum 75% from JPS max heap size }