memray flamegraph report (memory leaks)
Python Allocator: malloc
Reset
Memray run stats
Command line: /Users/cacoossandon/Documents/open-source/django-channels-example/venv/bin/memray run --force -o output.bin -m uvicorn core.asgi:application
Start time: 2024-05-01 08:17:39.106000
End time: 2024-05-01 08:18:32.557000
Total number of allocations: 10484824
Total number of frames seen: 26338
Peak memory usage: 34.4 MiB
Python allocator: malloc
How to interpret flamegraph reports

The flame graph displays stack frames at allocation, for memory that was leaked during the tracking period (i.e. allocated and not deallocated).

Note that the Python allocator doesn't necessarily release memory to the system when Python objects are deallocated and these can still appear as "leaks". If you want to exclude these, you can run your application with the `PYTHONMALLOC=malloc` environment variable set.

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.

Resident set size over time