Column | Description |
text | The amount of memory used to store your program’s machine code instructions. The text segment is sometimes called the code segment. |
data | The amount of memory used to store initialized and uninitialized data. |
heap | The amount of memory currently used for data created at run time; for example, calls to the malloc() function allocate space on the heap while the free() function releases it. |
stack | The amount of memory used by the currently executing routine and all the routines in its backtrace. If this is a multithreaded process, TotalView shows only information for the main thread’s stack. Note that the stacks of other threads might not change over time on some architectures. On some systems, the space allocated for a thread is considered part of the heap. For example, if your main routine invokes function foo(), the stack contains two groups of information—these groups are called frames. The first frame contains the information required for the execution of your main routine, and the second, which is the current frame, contains the information needed by the foo() function. If foo() invokes the bar() function, the stack contains three frames. When foo() finishes executing, the stack contains only one frame. |
stack_vm | The logical size of the stack is the difference between the current value of the stack pointer and the address from which the stack originally grew. This value can differ from the size of the virtual memory mapping in which the stack resides. For example, the mapping can be larger than the logical size of the stack if the process previously had a deeper nesting of procedure calls or made memory allocations on the stack, or it can be smaller if the stack pointer has advanced but the intermediate memory has not been touched. The stack_vm value is this size difference. |
vm_size | The sum of the sizes of the mappings in the process’s address space. |