Skip to content
Advertisement

What is the best way to detect memory leaks in a PyQt application?

I am developing a PyQt desktop application, on Linux, to be used in an industrial setting. It is basically a sensor data logger which displays real time graph and saves the data into a database. As it must run continuously 5 x 24 hours per week, I need to make sure there is no memory leak for it to run smoothly.

So, what is the best way to detect memory leaks in my application?

Advertisement

Answer

Memory Profiling Using tracemalloc

tracemalloc is a package included in the Python standard library.

It provides detailed, block-level traces of memory allocation, including the full traceback to the line where the memory allocation occurred, and statistics for the overall memory behavior of a program.

tracemalloc can be used to locate high-memory-usage areas of code in two ways:

  • looking at cumulative statistics on memory use to identify which object allocations are using the most memory, and
  • tracing execution frames to identify where those objects are allocated in the code.

A link for the documentation and PEP are below. Both provide excellent instructions on how to detect anomalies in Pythons memory management.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement