memory_stats Tcl Built-In Commands 8.3


memory_stats - Tcl memory allocation statistics




The memory_stats command is available in Hume customized versions of Tcl when the Tcl interpreter has been compiled to use its own memory allocation logic, and the MSTATS macro is true (compile flags -DUSE_TCL_ALLOC=1 and -DMSTATS (see generic/tclAlloc.c)). The command result provides information on the amount and sizes of memory blocks that have been allocated, are in active use, or are free. Tcl does not return small sized allocated memory to the system so it is often of interest to know to what degree allocated memory has been freed and is being retained for future use. The command result provides a list of named values.

% memory_stats
{freelist_counters {0 658 247 124 239 21 0 30 8 5 6 2 1}} \
{in_use {0 1390 3849 5508 273 235 128 66 56 51 14 0 0}} \
{total_small_free 244608} {total_small_in_use 1164416} \
{total_smalls_and_overhead 1512312} {big_in_use_count 0}

The named values have the following meanings:

The 13 numbers represent counts of memory blocks that have been allocated and then freed for future use. The counts are for the sequence of rounded-up allocation sizes of 8, 16, 32, ..., (2^15). Because of the per-allocation overhead which also allows for memory alignment, the smallest size may not be in use.
The 13 numbers represent counts of memory blocks that are in active use, ordered from smallest to largest.
This is the total amount of free memory which is computed by summing the product of the free counters and their sizes.
This is the total amount of active memory represented by the in_use counters and using their respective sizes.
This figure is the sum of the small free memory, the small active memory, and the amount of memory consumed by allocation overhead.
Memory blocks that are larger than 32k are allocated separately, and returned to the system when free. This count shows how many big blocks are in use.


ckalloc, ckfree, memory, Tcl_ValidateAllMemory, Tcl_DumpActiveMemory, TCL_MEM_DEBUG


The memory_stats command has been created by Hume Integration Software and is not part of the ordinary Tcl/Tk distribution.


memory, debug