Как система отображает память tomcat? - PullRequest
0 голосов
/ 19 декабря 2018

Я дал своему коту около 3 Гб оперативной памяти на виртуальной машине, имеющей около 8 ГБ, -Xms3072M -Xmx3072M -Xmn1024M.

после запуска tomcat и набрал в терминале

"пс-eo pmem, vsize, pid, cmd | sort -k 1 -nr | head -10 "

ответ, который я получаю для первого и единственного процесса Java, составляет 19,4% (19,4 7052620 12748 / usr / bin /Ява ...) Мой вопрос, что это за 19,4% памяти оперативной памяти Tomcat без кучи?это уравнение, которое я нашел в Интернете:

Макс. память = [-Xmx] + [-XX: MaxPermSize] + number_of_threads * [-Xss] (https://plumbr.io/blog/memory-leaks/why-does-my-java-process-consume-more-memory-than-xmx)

, потому что 19,4% из 8 ГБ2 ГБ, а моя куча 3 ГБ. Это оперативная память без кучи?

1 Ответ

0 голосов
/ 20 декабря 2018

Вы не называете свою ОС, хотя вполне очевидно, что это ОС * NIX-типа.

Память, которую показывает ps, является реальной, выделенной памятью.Он будет включать всю «родную», кучу и mmap редактируемую память, выделенную вашему процессу.Если ваш процесс очень молодой (т. Е. Не выполняется очень долго), он все равно не будет использовать большую часть своей кучи.

Многие операционные системы, особенно Linux, позволят mallocвернуть успех , даже если физическая память фактически не выделена.Поскольку JVM выделяет ваши настройки -Xms сразу после запуска, вы, вероятно, ожидаете, что объем памяти вашего процесса будет по крайней мере 3072MiB, но если эта память фактически не используется, то psвероятно, будет иметь меньший размер, чем вы ожидаете.

Если вы действительно используете Linux, посмотрите https://serverfault.com/questions/48582 и немного поищите в Интернете, как именно ядро ​​Linux распределяет память.Кроме того, если вы используете Linux, рассмотрите возможность добавления тега linux к вашему вопросу.

Если вы не используете Linux, вы можете прочитать окак ваша ОС распределяет память.Если ваша ОС использует стратегию «overcommit», она будет вести себя так, как описано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...