A veces, este error indica que la memoria física y el intercambio en el servidor realmente se utilizan por completo.
Estaba viendo este problema recientemente en un servidor que ejecuta RedHat Enterprise Linux 5.7 con 48 GB de RAM. Descubrí que incluso solo corriendo
java -version
causó el mismo error, lo que estableció que el problema no era específico de mi aplicación.
Corriendo
cat /proc/meminfo
informó que MemFree y SwapFree estaban por debajo del 1% de los valores MemTotal y SwapTotal, respectivamente:
MemTotal: 49300620 kB
MemFree: 146376 kB
...
SwapTotal: 4192956 kB
SwapFree: 1364 kB
Al detener algunas otras aplicaciones en ejecución en la máquina, las cifras de memoria libre aumentaron un poco:
MemTotal: 49300620 kB
MemFree: 2908664 kB
...
SwapTotal: 4192956 kB
SwapFree: 1016052 kB
En este punto, una nueva instancia de Java comenzaría bien y pude ejecutar mi aplicación.
(Obviamente, para mí, esta fue solo una solución temporal; todavía tengo una tarea sobresaliente para hacer un examen más exhaustivo de los procesos que se ejecutan en esa máquina para ver si hay algo que se pueda hacer para reducir los niveles nominales de utilización de memoria, sin tener que recurrir a la detención de las aplicaciones).