Как понять java.lang.management.MemoryMXBean и -Xms? - PullRequest
0 голосов
/ 16 января 2019

MemoryMXBean.getHeapMemoryUsage ()

У меня есть процесс jvm, который запускается с -Xms512m -Xmx512m, и ниже показан MemoryMXBean.getHeapMemoryUsage () этого процесса:

    init     = 512M
    used     = 105M
    comitted = 491M
    max      = 491M
  1. Почему максимальный 491M (я ожидаю, что будет 512M)?

MemoryMXBean.getNonHeapMemoryUsage () MemoryMXBean.getNonHeapMemoryUsage () этого процесса:

    init     = 2M
    used     = 25M
    comitted = 25M
    max      = 0M
  1. Что означает не-куча (кто ее использует)? Какая память будет учитываться в этой не куче? Я только знаю, что прямая память, которую мы использовали в java-коде, не будет (я прав?)

-Xms

  1. Что означает -Xms (начальный размер кучи)? Раньше я думал, что начальный размер кучи - это объем памяти, который JVM фактически выделит из ОС при запуске JVM, но это оказывается неправильно. top показывает, что RES этого jvm составляет почти 150 м, но jvm был запущен с -Xms512M.

  2. Является ли приведенная ниже формула правильной (или почти правильной -_-)? Если нет, то что тоже следует учитывать?

total memory a jvm used = used of MemoryMXBean.getHeapMemoryUsage() 
+ used of MemoryMXBean.getNonHeapMemoryUsage()
+ the direct memory we used in application level

Все будет оценено!

1 Ответ

0 голосов
/ 16 января 2019

Почему максимальный 491M (я ожидаю, что будет 512M)?

Одна область выживших не учитывается в max, потому что одна из областей выживших всегда пуста.
Смотри также этот ответ .

Что означает не-куча (кто ее использует)?

MemoryMXBean считает следующие пулы памяти JVM «без кучи»:

  • Code Cache (или Code Heap) - область для скомпилированных методов и другого динамически генерируемого кода;
  • Metaspace и Compressed Class Space - области для метаданных класса.

См. Также этот вопрос .

Что означает -Xms (начальный размер кучи)?

Да, это начальный размер кучи. ОС лениво распределяет страницы в физической памяти (при первом доступе). Вот почему RSS может быть меньше общего зафиксированного размера.

Подробнее см. . .

Правильна ли приведенная ниже формула

Нет. Все гораздо сложнее. Я объяснил это подробно в этот ответ .

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