-Xmx
beschränkt nur den Java-Heap. Der Code selbst, die JVM, Betriebssystem-DLLs, interne Java-Datenstrukturen und Thread-Stacks benötigen zusätzlichen Speicher. In Ihrem Fall benötigen sie anscheinend mehr als 550 MB RAM. Keine Heap-Einstellung würde die Gesamtmenge unter 256 MB bringen.
Beachten Sie jedoch, dass die Codeteile möglicherweise von Prozessen gemeinsam genutzt werden. Eine DLL, die in Ihrem Prozess 5 MB RAM verwendet, verwendet in einem anderen Prozess im Allgemeinen die gleichen 5 MB RAM.