Я прочитал эту статью о настройке сборки мусора виртуальной машины, чтобы лучше понять java сборщик мусора. Каждое пространство имеет область виртуального пространства кучи, в которую оно может расти, когда необходимое пространство кучи приближается к максимальному размеру кучи. Это можно увидеть на этой картинке:
(источник: oracle.com)
Вы можете установить соотношение между молодым поколением и старым (постоянным) поколением с помощью параметра NewRatio, а соотношение между пространством Эдема и пространством выживших - с помощью параметра SurvivorRatio.
Недавно был задан этот вопрос о выяснении коэффициентов по умолчанию для пространств кучи. В нем говорится, что вы должны использовать параметр PrintGCDetails и рассчитать коэффициенты вручную.
Мой вопрос: увеличивается ли размер разных пространств кучи на одно и то же соотношение, сохраняя, таким образом, соотношение, установленное между ними, при постоянном запуске в течение всего времени выполнения приложения? Например, если для Young Generation и Old/Tenured Generation значение NewRatio по умолчанию равно 3, а первоначальное зарезервированное пространство кучи составляет 100 МБ для Young, и 300 МБ для Old. Если для старого пространства нужно зарезервировать больше памяти, скажем, 300 МБ, то есть 600 МБ. Память, зарезервированная для Young Space, также удваивается до 200 МБ, сохраняя соотношение без изменений?