Oso Memory Profiler - Block Lists

The first tab in the left side of the Oso Memory Profiler window contains the block lists.

This view groups all memory allocations in the profile in two different ways:

Block Type

Firstly, memory blocks are grouped by type. The image on the right shows two such groupings.

The Oso Memory Profiler supports two block types by default:
  • Memory blocks
    Technically everything is a memory block, but in this instance, these are any memory block that doesn't have a user defined type.

  • Memory buckets
    A memory bucket is essentially a single memory block from which actual memory blocks can be allocated by a memory manager that provide pooled memory management.

In addition to the default types, an application can also register its own custom types. Typically you would use these types to distinguish how memory is being used, E.g., you might want to see memory allocated for image or audio data separately to other memory allocations. Or you might want to distinguish memory allocated by a particular third party library.

Registering custom block types through the Oso Memory Profiler's SDK and using those types when allocating and freeing memory would allow them to be grouped here in the Oso Memory Profiler block lists.

Block Header

The second level of grouping (essentially each row within the lists as seen in the image above) is the block header.

For standard block types the header is merely the size of the memory block in question, but custom block types are free to specify custom format strings that are more meaningful for the memory in question.

For example, image data blocks might construct a header string that represents the image dimensions and/or pixel depth. Audio data might be grouped according to frequency and bitrate.

Whatever the resulting header string is, the Oso Memory Profiler will group blocks with identical headers together in the block lists.