The flame graph displays a snapshot of memory used across stack frames at the time when the memory usage was at its peak.
Initially the report shows allocations made at any time and not freed before
tracking was deactivated. By using the two sliders on the bottom line chart,
you can select a different time range for analysis instead. The flame graph
will be updated to reflect allocations made within your chosen time window
and not freed within it.
The vertical ordering of the stack frames corresponds to the order of function calls, from parent to children.
The horizontal ordering does not represent the passage of time in the application: they simply represent child frames in arbitrary order.
On the flame graph, each bar represents a stack frame and shows the code which triggered the memory allocation.
Hovering over the frame you can also see the overall memory allocated in the given frame and its children and the number of times allocations have occurred.
The Show/Hide Irrelevant Frames button can be used to reveal and hide frames which contain allocations in code which might not be
relevant for the application. These include frames in the CPython eval loop as well as frames introduced by memray during the analysis.
You can find more information in the documentation.