Назад | Перейти на главную страницу

Распределение памяти Tomcat

Я смотрю на своего кота с помощью jconsole и пытаюсь понять, почему размер кучи варьируется от 0,4 ГБ до 1 ГБ.

Я думал, что сказал начинать с ~ 1 ГБ и использовать не более ~ 6 ГБ.

Кто-нибудь может объяснить, что происходит.

В моей командной строке есть следующие параметры памяти и GC: java -XX:NewSize=700m -XX:MaxNewSize=700m -Xms1202m -Xmx6014m -XX:MaxPermSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=20 -XX:ParallelGCThreads=4

-Xmsn Specify the initial size, in bytes, of the memory allocation pool

Вы сказали, что он должен начинаться с 1 ГБ.

-Xmxn Specify the maximum size, in bytes, of the memory allocation pool.

Вы сказали ему использовать не более 6 ГБ.

Я не вижу противоречия между тем, что вы видите, и поведением, описанным на вашем скриншоте. -XX: MaxNewSize заставит JVM начать работу с 700Mo. Однако я не нахожу много документации об этой опции среди интернета, поэтому я не могу быть уверен.

Затем ваше приложение запускается, выделяются объекты, а иногда и сборщик мусора для своей работы, освобождая память. Вы просто не достигли предельного значения, которое вы указали в начале (конечно, потому что вашему приложению это сейчас не нужно). Минимальная необходимая память составляет около 370Mo.

Нет никаких проблем ни с вашей конфигурацией (кроме, может быть, этого -XX: NewMemorySize, который я не могу понять), ни с поведением вашего приложения.