Есть ли какие-либо преимущества в сохранении размера MaxPermSize? - PullRequest
8 голосов
/ 09 марта 2012

Принимая во внимание 64-битную JVM, есть ли какое-либо существенное преимущество в сохранении размера MaxPermSize?

Это в контексте приложения Java EE, которое часто развертывается и имеет утечку загрузчика классов. В качестве среднесрочного обходного пути, кажется очень разумным просто увеличить MaxPermSize до абсурдного значения - до тех пор, пока оно не выбьет пространство подкачки диска.

Поскольку код неразвернутого приложения почти не используется (кроме того, что связан с утечкой), он выгружается операционной системой. Таким образом, нагрузка на физическую память от неразвернутого детрита кажется незначительной; это было проверено с помощью RSS (размер рабочего набора в Unix).

Есть ли другие эффекты, о которых я должен беспокоиться?

1 Ответ

6 голосов
/ 09 марта 2012

С JVM HotSpot FAQ

Должен ли я увеличить размер постоянного поколения в клиенте vm?

Это всегда будет оценочный вызов.В целом, увеличение размера поколения (и это относится не только к постоянному поколению) может снизить частоту возникновения самых разнообразных проблем. Однако это может привести к чрезмерному просмотру или выбрасыванию мусора другими процессами или выбрасыванию их за пределы.исключения памяти.

Необходимо учитывать два режима отказа.

При поднятии MaxPermSize возможно, что ранее хорошо работающие программы, которые использовали для сбора мусора для восстановления места постоянной генерации, умрут бесконечно.пейджинг.Для постоянной генерации это обычно происходит только при интенсивном интернировании временных строк.

Другой режим сбоя заключается в том, что адресное пространство должно быть зарезервировано для постоянной генерации, и это уменьшит пространство, доступное для остальной части кучи (максимальное значение -Xmx может быть слишком большим).Это приведет к тому, что программы, сконфигурированные для использования всего доступного пространства, будут сбои при инициализации.

Также эта статья гласит:

Таким образом, мы используем преимуществатот факт, что классы хранятся в постоянном поколении путем сбора постоянного поколения до сбора штатного поколения.И постоянное поколение в настоящее время собрано серийно.

Большое постоянное поколение может вызвать более длительное время GC, я думаю.

...