Мониторинг использования кучи Java

Я собираюсь отслеживать использование памяти JVM для отдельных узлов. Инструмент (JON 3.3) имеет различные метрики, такие как начальная куча/не куча, выделенная куча/не куча, использованная куча/не куча, максимальное использование кучи/не кучи. Я решил отслеживать используемую кучу и зафиксированное использование кучи, чтобы наблюдать за производительностью памяти JVM.

Достаточно ли следить за указанными параметрами, если нет, то какие другие параметры следует отслеживать, кроме используемого и зафиксированного использования кучи. Пожалуйста, посоветуйте по этому поводу.

введите здесь описание изображения


person karthik    schedule 30.03.2016    source источник


Ответы (1)


  • init

    представляет начальный объем памяти (в байтах), который виртуальная машина Java запрашивает у операционной системы для управления памятью во время запуска. Виртуальная машина Java может запрашивать дополнительную память у операционной системы, а также может со временем высвобождать память для системы. Значение init может быть неопределенным.

  • used

    представляет объем используемой в данный момент памяти (в байтах).

  • committed

    представляет объем памяти (в байтах), который гарантированно доступен для использования виртуальной машиной Java. Объем выделенной памяти может меняться со временем (увеличиваться или уменьшаться). Виртуальная машина Java может высвобождать память для системы, а объем Commit может быть меньше, чем init. commit всегда будет больше или равен используемому. max представляет максимальный объем памяти (в байтах), который можно использовать для управления памятью. Его значение может быть неопределенным. Максимальный объем памяти может меняться со временем, если он определен. Объем используемой и выделенной памяти всегда будет меньше или равен max, если max определен. Выделение памяти может завершиться ошибкой, если оно попытается увеличить используемую память таким образом, что используется > зафиксировано, даже если используется ‹= max, все равно будет верно (например, когда в системе недостаточно виртуальной памяти). Ниже приведен рисунок, показывающий пример пула памяти:

    +----------------------------------------------+
    +////////////////           |                  +
    +////////////////           |                  +
    +----------------------------------------------+
    
    |--------|
       init
    |---------------|
           used
    |---------------------------|
              committed
    |----------------------------------------------|
    
  • Память без кучи (~Perm)

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

person Jiri Kremser    schedule 03.04.2016