Влияние параметров кучи на ГХ / производительность?
Большая часть места в сети, я получаю ниже информацию о параметрах кучи
-Xms<size> set initial Java heap size -Xmx<size> set maximum Java heap size
Вот мое понимание / вопрос, когда я упоминаю-Xms 512M -Xmx 2048M
параметры,
-Xms: - Насколько я понимаю, если моему процессу java на самом деле нужны только 200M, с упоминанием -Xms 512M, процессу java все равно будет назначено только 200M (требуется фактическая память) вместо 500M. Но если я уже знаю, что мое приложение будет загружать эту 512M памяти при запуске, то указание менее чем повлияет на производительность, так как в любом случае необходимо изменить размер блока кучи, что является дорогостоящей операцией.
За обсуждение с моим коллегой, По умолчанию GC сработает на 60% от значения Xms. Это верно ? Если да, это вспомогательный или полный сборщик мусора, который зависит от значения Xms?
Обновление на Xms: - Это похоже на правду после прочтенияПараметры кучи JVM но опять же значение по умолчанию составляет 60% и является ли оно второстепенным или полным GC, которое зависит от значения Xms?
-Xmx: - Насколько я понимаю, с упоминанием -Xmx 2048M, процесс Java на самом деле собирается зарезервировать 2048M памяти для его использования из ОС, так что другому процессу не может быть предоставлена его доля. Если процессу java понадобится больше 2048M памяти, то из памяти будет недостаточно быть брошенным.
Также я считаю, что есть некоторое отношение триггера Full GC к значению -Xmx. Потому что то, что я наблюдал, когда память достигает почти 70% от Xmx, Full GC происходит в jconsole. Это верно?
Конфигурация: - Я использую linux box (64-битная JVM 8). GC по умолчанию, т.е. параллельный GC