RAM livre significa simplesmente que não há nada armazenado nele. Isso não significa que você pode usá-lo. É perfeitamente possível que a RAM reportada como livre não seja utilizável por sua nova JVM porque outros aplicativos a reservaram. Em qualquer caso, a JVM, assim como a maioria dos aplicativos, não solicita memória RAM, mas sim memória virtual. Isso é mais do que provavelmente o problema que o seu sistema está sofrendo, a falta de memória virtual.
Você saberá o uso de sua memória virtual com esse comando:
swap -s
A resposta simples para uma falta de memória virtual é simplesmente aumentar (ou criar) uma área de troca para que as reservas de memória tenham uma área de armazenamento de apoio.
Editar: Com as informações adicionais que você postou, o motivo pelo qual seu aplicativo não pode alocar mais memória virtual é devido ao fato de você estar em execução em uma região não global onde o limite de memória está em vigor. As zonas não globais são contêineres, ou seja, todas compartilham o mesmo kernel. No entanto, o uso de recursos pode ser limitado para impedir que uma zona perturbe as outras.
Fora de outros processos que usam memória virtual, não há nada que você possa fazer desta zona, mesmo como root. Você precisa pedir ao administrador da região global para conceder mais memória virtual à sua zona , no seu caso, o zone.max-swap
configuração.