With the announcement of improved docker container integration with Java 10, the JVM is now aware of resource constraints, as not from prior versions. More information on this post
Differences in Java 8 and Java 10:
As you can see with Java 8:
12345
$ docker run -it -m512M --entrypoint bash openjdk:latest
$ docker-java-home/bin/java -XX:+PrintFlagsFinal -version | grep MaxHeapSize
uintx MaxHeapSize :=524288000{product}openjdk version "1.8.0_162"
And with Java 10:
12345
$ docker run -it -m512M --entrypoint bash openjdk:10-jdk
$ docker-java-home/bin/java -XX:+PrintFlagsFinal -version | grep MaxHeapSize
size_t MaxHeapSize=134217728{product}{ergonomic}openjdk version "10" 2018-03-20