>> But the in case of containers with a hard memory limit, the entire container will simply be killed without warning.
At least in my experience that is not true. I quite often run into this issue and the OOM-killer will only kill one of the processes inside the container, not the entire container.
>> The same is true for default memory limits. The JVM looks at the host overall memory and uses that to set its defaults.
Well, I guess if you launch a JVM anywhere without setting appropriate memory settings, you are doing something fundamentally wrong.