Hi Andrew, On Mon, 2018-04-16 at 09:47 +0100, Andrew Haley wrote: > On 04/13/2018 02:40 PM, Severin Gehwolf wrote: > > ++ /usr/bin/tee > > /builddir/build/BUILD/java-9-openjdk-9.0.4.12-5.openjdk9.el7.s390/openjdk/build/jdk/modules/java.base/_the.java.base_batch.log > > ++ /usr/bin/tee > > /builddir/build/BUILD/java-9-openjdk-9.0.4.12-5.openjdk9.el7.s390/openjdk/build/jdk/modules/java.base/_the.java.base_batch.log > > Error occurred during initialization of VM > > Could not reserve enough space for 1048576KB object heap > > What is the root cause of this? Is it that the system on which the build runs > cannot allocate all that memory? Does not have that much memory?
The configure code in JDK 9+ has this: JVM_HEAP_LIMIT_32="1024" # Running a 64 bit JVM allows for and requires a bigger heap JVM_HEAP_LIMIT_64="1600" STACK_SIZE_32=768 STACK_SIZE_64=1536 JVM_HEAP_LIMIT_GLOBAL=`expr $MEMORY_SIZE / 2` if test "$JVM_HEAP_LIMIT_GLOBAL" -lt "$JVM_HEAP_LIMIT_32"; then JVM_HEAP_LIMIT_32=$JVM_HEAP_LIMIT_GLOBAL fi if test "$JVM_HEAP_LIMIT_GLOBAL" -lt "$JVM_HEAP_LIMIT_64"; then JVM_HEAP_LIMIT_64=$JVM_HEAP_LIMIT_GLOBAL fi if test "$JVM_HEAP_LIMIT_GLOBAL" -lt "512"; then JVM_HEAP_LIMIT_32=512 JVM_HEAP_LIMIT_64=512 fi if test "x$BOOT_JDK_BITS" = "x32"; then STACK_SIZE=$STACK_SIZE_32 JVM_MAX_HEAP=$JVM_HEAP_LIMIT_32 else STACK_SIZE=$STACK_SIZE_64 JVM_MAX_HEAP=$JVM_HEAP_LIMIT_64 fi Here's my reasoning: If I read this right then -Xmx will be bound above by 1/2 the hardware memory size. The set heap limit for that build was 1024M. It then follows that 1024M was less than 1/2 the hardware memory. Yet, it still failed to allocate required memory. So to answer your question: It looks like it was that the system wasn't able to allocate that much memory at the time. Those builds run on systems I don't have access to, though. What's more, I don't have access to the build logs of that failed build any longer. From a successful s390 build with that patch I see: $ grep 'Memory limit' build.log * Memory limit: 5906 MB This seems suspiciously high for 32 bit (or 31 bit in this case). Maybe it gets the hardware memory size of the 64bit host system? We know this runs in mock chroots on s390x boxes. Thanks, Severin