Отвечая на вопрос в интервью. Что произойдет, если указать максимальный размер кучи (Xmx) больше, чем доступная оперативная память? Я также задаюсь вопросом, что произойдет, если вы укажете минимальный размер кучи (Xms) больше, чем доступная оперативная память?
Что произойдет, если указать максимальный размер кучи больше, чем доступная оперативная память
Ответ 1
Самый простой способ узнать - попробовать и посмотреть.
Edit: На этот вопрос есть как минимум два ответа. Вероятно, на 64-битной системе, как уже упоминалось, ваше приложение может расти и расти в памяти и начинать рушиться. В 32-битной системе история немного отличается, потому что os не может дать вам столько кучи. Например, если я запустил приложение в Windows XP с 32-битным java с параметром командной строки -Xmx2000m, он умрет с сообщением, аналогичным следующему:
Недопустимый максимальный размер кучи: -Xmx2000m
Указанный размер превышает максимально отображаемый размер.
Не удалось создать виртуальную машину Java.
В Linux с 32-битным java я получаю следующее: -Xmx3000m:
Не удалось создать виртуальную машину Java.
Ошибка при инициализации VM
Не удалось зарезервировать достаточно места для кучи объектов
В Linux с 32-битным java я получаю следующее: -Xmx6000m
Недопустимый максимальный размер кучи: -Xmx6000m
Указанный размер превышает максимально отображаемый размер.
Не удалось создать виртуальную машину Java.
Попробовав это с помощью 64-битной Java, JVM позволяет вам выделять больше памяти, чем есть физическая RAM, но если вы запрашиваете чрезвычайно большой объем памяти, jvm снова завершится с ошибкой.
Ответ 2
Ничего Драматического
Хотя это может случиться и с некоторыми низкоуровневыми встроенными системами, в наши дни было бы довольно редко видеть не виртуальную среду Java даже во встроенной и невозможной на рабочем столе или сервере.
Итак, ничего драматичного не произойдет, но как только вы используете доступную ОЗУ, выделение дополнительной (виртуальной) памяти просто излишне задерживает мелиорацию (сбор мусора) и заставляет программу запускать подкачка.
Если это серьезно, это условие называется " thrashing ", и это нехорошо. Материал будет работать медленно.