Как разработчик может управлять параметрами памяти JVM перед запуском программы?

«Как разработчик может управлять параметрами памяти JVM перед запуском программы?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Разработчик управляет памятью JVM через аргументы командной строки (JVM options). Основные параметры:

  • -Xms<size> – задает начальный размер кучи (Heap).
  • -Xmx<size> – задает максимальный размер кучи.
  • -Xss<size> – задает размер стека для каждого потока.

Пример запуска с настройками памяти:

java -Xms512m -Xmx2g -Xss256k -jar MyApplication.jar

Другие важные параметры:

  • -XX:MaxMetaspaceSize=<size> – лимит для метапространства (Metaspace), хранящего метаданные классов.
  • -XX:+UseContainerSupport – для корректной работы в контейнерах (Docker, Kubernetes).
  • -XX:MaxRAMPercentage=75.0 – использовать указанный процент от доступной RAM для кучи (полезно в контейнерах).

Важно: Конкретные флаги и их поведение могут зависеть от версии JVM и выбранного сборщика мусора.