Иногда эта ошибка указывает на то, что физическая память и своп на сервере фактически используются полностью!
Недавно я видел эту проблему на сервере под управлением RedHat Enterprise Linux 5.7 с 48 ГБ оперативной памяти. Я обнаружил, что даже просто работает
java -version
вызвал ту же ошибку, которая установила, что проблема не была характерна для моего приложения.
Бег
cat /proc/meminfo
сообщили, что значения MemFree и SwapFree значительно ниже 1% значений MemTotal и SwapTotal, соответственно:
MemTotal: 49300620 kB
MemFree: 146376 kB
...
SwapTotal: 4192956 kB
SwapFree: 1364 kB
Остановка нескольких запущенных приложений на машине несколько увеличила объем свободной памяти:
MemTotal: 49300620 kB
MemFree: 2908664 kB
...
SwapTotal: 4192956 kB
SwapFree: 1016052 kB
В этот момент новый экземпляр Java запустится нормально, и я смог запустить свое приложение.
(Очевидно, для меня это было лишь временное решение; у меня все еще есть нерешенная задача - более тщательно изучить процессы, запущенные на этой машине, чтобы выяснить, можно ли что-то сделать, чтобы снизить номинальные уровни использования памяти, без приходится прибегать к остановке приложений.)