Почему размер кучи JVM увеличивается от 2 до 8 ГБ?
Нет доказательств того, что система бьется в обычном (вредном) смысле. Пилообразная схема указывает, что объекты распределяются (наклон вверх), и ГХ затем восстанавливает их. Скорость выделения кажется немного высокой, но есть все признаки того, что GC работает эффективно. Действительно, тот факт, что размер кучи всегда уменьшается до ~ 2 ГБ, является хорошим признаком, а также тот факт, что процент использования ЦП низок.
У меня мало опыта в настройке памяти, но кажется, что MaxPermSize не в порядке с Xms и Xmx. Или это нормально?
Это выглядит нормально.
Конечно, нет необходимости увеличивать размер permGen. (PermGen используется для объектов, которые, как ожидается, никогда не будут собирать мусор; как правило, intern'd строки 1 и сегменты кода. Обычные объекты приложения никогда не размещаются и не перемещаются в пространство permgen.)
Гипотетически, если у вас не было много памяти, высокая скорость выделения может быть причиной для беспокойства. Однако вы не можете решить эту проблему путем настройки параметров GC. Вам нужно выполнить некоторое профилирование, чтобы увидеть, что создает столько объектов, и посмотреть, имеет ли смысл попытаться уменьшить скорость создания. В зависимости от приложения, это может быть даже нецелесообразно.
1 - На самом деле, начиная с Java 7 строки intern'd живут в обычной куче, а не permgen.