Как увеличение размера свопа позволяет мне увеличить размер кучи?

У меня есть сервер Ubuntu, где у меня есть 8 ГБ оперативной памяти. Когда я пытаюсь указать размер кучи 8 ГБ, мой веб-сервер (weblogic) не запускается. Но если я увеличу размер подкачки до размера 11 ГБ, веб-сервер запустится.

Поэтому мой вопрос заключается в том, как я могу выделить размер кучи 8 ГБ для своего веб-сервера (если у меня есть 8 ГБ ОЗУ, из которых для ОС требуется от 1 до 2 ГБ) после увеличения размера подкачки?

1 ответ

Решение

Делать. Не. Сделай это.

Получите больше памяти.

Java и Swap Do. Не. Смешать. Java и Swap похожи на "Пересечение потоков". Плохо.

Часть кучи Java будет выгружена, тогда Java будет GC, который будет ужасно разбивать окно, а часть кучи все равно будет выгружена, а Java снова будет GC.

Промыть и повторять до тех пор, пока не убьешь -9 Weblogic.

Получить больше памяти, или обойтись без. Своп не вариант.

Дополнения:

На вашей машине установлена ​​"Виртуальная память" (ВМ). Добавляя swap, вы расширяете эту виртуальную машину. Если у вас больше виртуальной машины, чем фактической памяти, то машина "выгрузит" неактивные страницы памяти в пространство подкачки, а затем "поменяет" страницы, которые хотят быть активными, из пространства подкачки в ОЗУ. Если у вас есть куча бездействующих процессов, которые редко требуют времени, это не супер ужасно.

Но Java усиливает проблему. Когда у вас заканчивается физическое ОЗУ, часть этого ОЗУ выгружается на диск. Когда часть этой ОЗУ представляет собой кучу Java, у вас возникает большая проблема, когда включается сборщик мусора. Потому что, как правило, GC касается каждой страницы кучи. Это означает, что все страницы кучи должны быть "активными" и, следовательно, "поменяться местами".

Но если они не подходят, то у вас есть проблема, как 8 головоломки. Где вы перемещаете память с диска. Это называется избиением.

Подкачанная куча JVM, которая является GC, является случаем учебника наихудшего случая.

Машина позволяет вам выделять дополнительную память, потому что она думает, что у вас больше, так как ваша виртуальная память (физическая память + подкачка) больше.

Другие вопросы по тегам