Преимущество заключается в том, что производительность снижается, если вы используете достаточно кучи, чтобы ее размер был изменен. Если вы изначально установили его на 64 МБ, но оказалось, что вашему приложению под нагрузкой нужны 250 МБ, то, когда вы достигнете значения около 64 МБ, JVM выделит больше пространства кучи и, возможно, будет перемещаться по некоторым объектам и вести другой учет. Это, конечно, требует времени.
Когда ваше приложение находится под нагрузкой, вы хотите, чтобы все ресурсы были выделены для его запуска, поэтому эта дополнительная работа может замедлить реакцию приложения, или даже в некоторых случаях может произойти сбой, если у него заканчивается память до того, как куча будет изменен.
Иногда при использовании приложения на Java вы увидите инструкции типа «установите Xms
и Xmx
на одно и то же значение». Это сделано для того, чтобы вообще избежать изменения размера, чтобы ваше приложение запускалось с уже такой большой кучей, какой он когда-либо будет.