Іноді ця помилка вказує на те, що фізична пам'ять і своп на сервері насправді повністю використовуються!
Нещодавно я бачив цю проблему на сервері під управлінням 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 запуститься нормально, і я зміг запустити свою програму.
(Очевидно, для мене це було лише тимчасовим рішенням; у мене все ще є невирішене завдання зробити більш ретельне вивчення процесів, що працюють на цій машині, щоб побачити, чи можна щось зробити для зниження номінального рівня використання пам'яті, без потрібно вдатися до зупинки програм.)