I can't for the life of me figure out why -Xmx
in MAVEN_OPTS
doesn't work for Maven in openjdk:8-jdk-alpine
.
This:
$ docker run --rm openjdk:8-jdk-alpine sh -c 'apk add maven && MAVEN_OPTS=-Xmx2g\ -Xms2g mvn --version'
Produces:
Error occurred during initialization of VM
Initial heap size set to a larger value than the maximum heap size
I've used -XX:+PrintFlagsFinal
to look at MaxHeapSize
with various settings and here's what I found:
Apparently
-Xmx
is fixed to 512mb regardless of what's specified. Other options such as-Xms
and-XX:+PrintFlagsFinal
work as expected:$ docker run --rm openjdk:8-jdk-alpine sh -c 'apk add maven && \ MAVEN_OPTS="-Xmx123m -Xms123m -XX:+PrintFlagsFinal" mvn --version | egrep "(Initial|Max)HeapSize"' uintx InitialHeapSize := 130023424 {product} uintx MaxHeapSize := 536870912 {product}
apt add maven
is installing maven version3.6.0-r0
but trying with other versions also produce the same result. For example,3.6.1-r0
in Alpine 3.10 and3.5.2-r0
in Alpine 3.7 produced the same result:$ docker run openjdk:8-jdk-alpine sh -c 'sed -e s:/v3.9/:/v3.10/: /etc/apk/repositories -i && \ apk add maven && MAVEN_OPTS=-Xmx2g\ -XX:+PrintFlagsFinal mvn -version | fgrep MaxHeapSize'
I've looked for
~/.m2/settings.xml
and./.mvn
as mentioned in https://maven.apache.org/configure.html but neither seem to exist:$ docker run --rm openjdk:8-jdk-alpine sh -c 'apk add maven && ls ~/.m2'
java
seems to support-Xmx
fine:$ docker run --rm openjdk:8-jdk-alpine sh -c 'java -Xmx2g -XX:+PrintFlagsFinal -version | fgrep MaxHeapSize'
The problem doesn't occur if
maven:3.6.0-jdk-8-alpine
is used instead ofopenjdk:8-jdk-alpine
:$ docker run --rm maven:3.6.0-jdk-8-alpine sh -c \ 'MAVEN_OPTS=-Xmx2g\ -XX:+PrintFlagsFinal mvn --version | fgrep MaxHeapSize'
Using
_JAVA_OPTIONS
instead ofMAVEN_OPTS
works as a workaround:$ docker run --rm openjdk:8-jdk-alpine sh -c 'apk add maven && \ _JAVA_OPTIONS=-Xmx2g\ -XX:+PrintFlagsFinal mvn --version | fgrep MaxHeapSize'
Question is, how is -Xmx
in MAVEN_OPTS
being ignored for Maven in openjdk:8-jdk-alpine
?