-Xmx
apenas restringe o heap Java. O código em si, a JVM, as DLLs do SO, as estruturas de dados Java internas e as pilhas de encadeamentos levam memória adicional. No seu caso, eles aparentemente levam mais de 550 MB de RAM. Nenhuma configuração de heap traria o total abaixo de 256 MB.
No entanto, observe que as partes do código podem ser compartilhadas entre os processos. Uma DLL que usa 5 MB de RAM em seu processo geralmente usará os mesmos 5MB de RAM em outro processo.