TL;DR: Java and cgroups/Docker memory constraints don’t always behave as you might expect. Always explicitly specify JVM heap sizes. Also be aware that kernel features may not be enabled. And Linux… lies. I’ve recently discovered an interesting “quirk” in potential interactions between Java, cgroups, Docker, and the kernel which can cause some surprising results. Unless …