Проверка кучи, используемой запущенным процессом в Solaris 10

Как я могу проверить, что куча используется запущенным процессом в Solaris 10? pmap предоставляет информацию, но я хотел бы увидеть использование кучи, нужно ли мне это делать?

pmap | grep [heap]

Если мы хотим знать программно из программы, мы можем использовать следующую команду:

struct mallinfo mallinfo(void);

Функция mallinfo () возвращает копию структуры, содержащую информацию о выделении памяти, выполняемом malloc и связанными функциями. Эта структура определяется следующим образом:

       struct mallinfo {
           int arena;     /* Non-mmapped space allocated (bytes) */
           int ordblks;   /* Number of free chunks */
           int smblks;    /* Number of free fastbin blocks */
           int hblks;     /* Number of mmapped regions */
           int hblkhd;    /* Space allocated in mmapped regions (bytes) */
           int usmblks;   /* Maximum total allocated space (bytes) */
           int fsmblks;   /* Space in freed fastbin blocks (bytes) */
           int uordblks;  /* Total allocated space (bytes) */
           int fordblks;  /* Total free space (bytes) */
           int keepcost;  /* Top-most, releasable space (bytes) */
       };

Будет ли полезно узнать, сколько памяти мы уже выделили (общий объем выделенной памяти - общий объем освобожденной памяти, равный выделенной чистой памяти)?


person Dr. Debasish Jana    schedule 07.09.2015    source источник
comment
Если вы умеете запускать dtrace, вас могут заинтересовать графики роста памяти   -  person Mark Plotnick    schedule 10.09.2015


Ответы (1)


Возможно, лучше всего будет изучить функции, доступные в <procfs.h>.

person James McPherson    schedule 28.11.2015