Oso Memory Profiler - Event Streams

The primary main view in the Oso Memory Profiler contains the event streams. Each stream represents a single thread of execution in your application, and provides a graphical representation of every event that occurred in that thread.

As you can see in the above image, streams which are idle as far as memory events are concerned are condensed to avoid wasting space, and are colour coded to provide contrast and help with context in other parts of the Oso Memory Profiler user interface.

Memory events within a stream are ordered according to when they occurred, and are represented by a coloured bar in the stream. In addition to the order in which events occurred, each event manages to convey the following information:

Event Type

Allocation events extend up from the centre of the stream, while free events extend down. Messages occupy the entire stream space.

Block Type

The colour of each event indicates the block type associated with that event. (Message events can also be colour coded to represent different message types.)

Block Size

The length of the event's bar gives an indication of the size of the memory block associated with that event. The longer the bar, the larger the memory block.

Event Validity

Events that have been flagged as having breached warning or error conditions are coloured with yellow or red backgrounds respectively.

Being able to view memory events in this manner makes it very easy to spot and identify problems quickly and efficiently. The expanding ramp pattern, as seen on the right, is typically a vector being filled without first being pre-allocated.

Other patterns can similarly be recognised quite quickly when you know what to look for.