tracemalloc — 跟踪内存分配

Added in version 3.4.

源代码: Lib/tracemalloc.py


tracemalloc 模块是跟踪 Python 分配内存块的调试工具。它提供下列信息:

  • 回溯分配对象位置

  • 有关每文件名和每行号所分配的内存块统计信息:分配内存块的总大小、数量和平均大小

  • 计算 2 快照间差异以检测内存泄漏

要跟踪 Python 分配的大部分内存块,应尽早启动模块通过设置 PYTHONTRACEMALLOC 环境变量到 1 ,或通过使用 -X tracemalloc 命令行选项。 tracemalloc.start() 函数可以在运行时被调用以启动跟踪 Python 内存分配。

默认情况下,仅存储分配内存块跟踪最近的 1 帧。要在启动时存储 25 帧:设置 PYTHONTRACEMALLOC 环境变量到 25 ,或使用 -X tracemalloc=25 命令行选项。

范例

显示前 10

显示分配最多内存的 10 个文件:

import tracemalloc
tracemalloc.start()
# ... run your application ...
snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')
print("[ Top 10 ]")
for stat in top_stats[:10]:
    print(stat)