Что происходит с процессом Java, если в системе очень мало физической памяти - PullRequest
0 голосов
/ 14 февраля 2019

У меня запущен Java-процесс, выполняющий некоторые задачи, через пару часов в системе открываются несколько других приложений, в результате чего в системе очень мало физической памяти.

Итак, если система имеетнет физической памяти / очень мало памяти, как мой Java-процесс реагирует на такую ​​ситуацию?Будет ли выброшено исключение «недостаточно памяти»?

enter image description here

1 Ответ

0 голосов
/ 14 февраля 2019

Когда RAM исчерпан, OS обычно будет использовать swap или pagefile для предоставления виртуальной памяти :

ОЗУ является ограниченным ресурсом, тогда как для большинства практических целей виртуальная память не ограничена.Процессов может быть много, и каждый процесс имеет свои 2 ГБ частного виртуального адресного пространства.Когда объем памяти, используемой всеми существующими процессами, превышает доступную оперативную память, операционная система перемещает страницы (по 4 КБ) одного или нескольких виртуальных адресных пространств на жесткий диск компьютера.Это освобождает этот кадр ОЗУ для других целей.В системах Windows эти «выгруженные» страницы хранятся в одном или нескольких файлах (файлы Pagefile.sys) в корне раздела.

Пейджинг обычно приводит ксерьезное снижение производительности, потому что даже современное SSD хранилище не так быстро, как RAM.Если нехватка памяти продолжается, система может начать перебивать .

При условии, что для JVM не требуется больше памяти, например, она уже ограничена -Xmx ивыделил всю разрешенную память, он продолжит работать.Обычно, когда память исчерпана, ОС не позволяет запускать новые процессы, например, попытка запустить новый процесс JVM приведет к следующей ошибке:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine. 

В конце дня это зависит от конфигурации ОС.Обычно в этой ситуации не стоит заниматься расследованием, поскольку оперативная память намного дешевле, чем время разработчика.

...