Читая некоторые заметки по настройке производительности, я заметил рекомендации при установке размера памяти:
Приложение Java должно иметь одинаковое значение для начального и максимального размера постоянного поколения, поскольку для увеличения или сжатия постоянного пространства генерации требуется полный сборщик мусора. Аналогичное предложение дается при установке размера кучи, т.е. -Xmx=-Xms
.
У меня вопрос: тогда почему у нас вообще есть параметр -Xms?
Кроме того, Почему сборщик мусора часто срабатывает, если у меня разные значения для -Xmx и -Xms, а не когда у меня одинаковый размер для -Xmx и -Xms.
Чтобы добавить больше к моему второму вопросу: Если я начну с минимального размера кучи 64 МБ и максимального 512 МБ, я считаю, что полный сборщик мусора не будет запущен, если память, используемая моим приложением, не достигнет 512 МБ.
Точно так же, если я начну с 512M для -Xmx и -Xms, JVM все равно будет запускать полный сборщик мусора, когда мое использование памяти приложения достигнет этого предела. Так почему же рекомендуется устанавливать для max и min одно и то же значение?