Heads Up: OutOfMemoryError when building a 64-bit JDK 9 using a 32-bit bootdir.
Bradford Wetmore
bradford.wetmore at oracle.com
Fri Mar 7 22:40:56 UTC 2014
For quite some time I've been building on my Windows 7 laptop using
something like this:
% bash configure --enable-debug \
--with-boot-jdk=/cygdrive/d/java/bootdirs/i586/jdk1.7.0_XX
As of Wed, my builds started dying in the big "compile the JDK world"
javac part [1] of the jdk repo with :
---begin---
The system is out of resources.
Consult the following stack trace for details.
java.lang.OutOfMemoryError: Java heap space
at
com.sun.tools.javac.parser.UnicodeReader.getRawCharacters(UnicodeRead
er.java:250)
at
com.sun.tools.javac.parser.JavaTokenizer.getLineMap(JavaTokenizer.jav
a:763)
at com.sun.tools.javac.parser.Scanner.getLineMap(Scanner.java:127)
at
com.sun.tools.javac.parser.JavacParser.parseCompilationUnit(JavacPars
er.java:3136)
at
com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:630)
at
com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:667)
at
com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:95
5)
at
com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:854)
at com.sun.tools.javac.main.Main.compile(Main.java:521)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:56)
at com.sun.tools.javac.Main.main(Main.java:42)
CompileJavaClasses.gmk:323: recipe for target
`/cygdrive/d/java/ws/dev/build/win
dows-x86_64-normal-server-release/jdk/classes/_the.BUILD_JDK_batch' failed
make[2]: ***
[/cygdrive/d/java/ws/dev/build/windows-x86_64-normal-server-release
/jdk/classes/_the.BUILD_JDK_batch] Error 3
make[2]: Leaving directory `/cygdrive/d/java/ws/dev/jdk/make'
BuildJdk.gmk:64: recipe for target `classes-only' failed
make[1]: Leaving directory `/cygdrive/d/java/ws/dev/jdk/make'
make[1]: *** [classes-only] Error 2
/cygdrive/d/java/ws/dev//make/Main.gmk:116: recipe for target `jdk-only'
failed
make: *** [jdk-only] Error 2
---end---
My guess is that my build has been teetering on the edge of memory for a
while, and some recent change likely pushed it over. Moving to a 64-bit
bootdir took care of the problem.
% bash configure --enable-debug \
--with-boot-jdk=/cygdrive/d/java/bootdirs/x64/jdk1.7.0_XX
Brad
[1] Build log
Compiling 9634 files for BUILD_JDK
(/cygdrive/d/java/ws/dev/build/windows-x86_64-normal-server-release/fixpath.exe
-c \
/cygdrive/d/java/bootdirs/jdk1.7.0_51.old/bin/java \
-Xms64M -XX:ThreadStackSize=1536 \
"-Xbootclasspath/p:/cygdrive/d/java/ws/dev/build/windows-x86_64-normal-server-release/langtools/dist/interim_langtools.jar"
\
-cp
/cygdrive/d/java/ws/dev/build/windows-x86_64-normal-server-release/langtools/dist/interim_langtools.jar
\
com.sun.tools.javac.Main -bootclasspath \
/cygdrive/d/java/ws/dev/build/windows-x86_64-normal-server-release/jdk/classes
-source 8 -target 8 -encoding ascii \
-XDignore.symbol.file=true -Xlint:-unchecked,-deprecation,-overrides,\
auxiliaryclass,cast,classfile,dep-ann,divzero,empty,overloads,static,\
try,varargs -Werror -implicit:none -sourcepath \
"...deleted..." \
-d
/cygdrive/d/java/ws/dev/build/windows-x86_64-normal-server-release/jdk/classes
\
-h
/cygdrive/d/java/ws/dev/build/windows-x86_64-normal-server-release/jdk/gensrc_headers.BUILD_JDK.tmp
\
@/cygdrive/d/java/ws/dev/build/windows-x86_64-normal-server-release/jdk/classes/_the.BUILD_JDK_batch.tmp
\
&& /usr/bin/mv \
/cygdrive/d/java/ws/dev/build/windows-x86_64-normal-server-release/jdk/classes/_the.BUILD_JDK_batch.tmp
\
/cygdrive/d/java/ws/dev/build/windows-x86_64-normal-server-release/jdk/classes/_the.BUILD_JDK_batch)
More information about the build-dev
mailing list