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