Repolode
bloomberg

bloomberg/memray

面向 Python 的内存分析器,可追踪 Python 代码、原生扩展及解释器自身的内存分配,并生成多种报告。

Star
15,389
Fork
480
未关闭 Issue
37
最近提交
前天

这是什么?

Memray 是一款面向 Python 的内存分析器,可记录 Python 代码、C/C++ 原生扩展模块以及解释器自身发起的内存分配,并将采集数据生成火焰图、表格、树形视图和终端摘要等报告。它最常以命令行形式通过 `memray run` 使用,也可以作为库,通过 Tracker 上下文管理器进行更细粒度的分析。

与采样式分析器不同,Memray 会追踪每一次函数调用,因此调用栈记录更准确。原生代码追踪需通过 `--native` 按需开启,会把 C/C++ 栈帧加入结果,便于分析 numpy、pandas 等扩展的内存占用。实时模式可在终端中随程序运行查看分配情况,attach 功能则可以对已运行的进程开始追踪。

该工具主要用于定位内存占用过高的原因、查找内存泄漏以及发现分配频繁的热点代码,支持 Python 线程和原生线程。目前仅支持 Linux 和 macOS,要求 Python 3.9 及以上版本。pytest 插件 pytest-memray 是独立项目。

核心功能

  • 01逐次追踪函数调用,调用栈比采样式分析器更准确
  • 02通过 --native 同时追踪 Python 代码与 C/C++ 原生扩展的分配
  • 03生成火焰图、HTML 表格、终端树形视图和摘要报告
  • 04实时终端界面,可在程序运行时查看内存分配
  • 05支持附加到已运行的 Python 进程进行追踪
  • 06可通过 Tracker 上下文管理器以库的形式调用

适用场景

  • 排查 Python 服务或脚本内存占用过高的原因
  • 定位长时间运行应用中的内存泄漏
  • 找出分配大量内存的代码热点
  • 分析依赖 numpy、pandas 等 C 扩展的 Python 程序

快速上手

  1. 1

    从 PyPI 用 pip 安装 Memray

    python3 -m pip install memray
  2. 2

    在分析器下运行你的脚本以记录内存分配

    python3 -m memray run my_script.py
  3. 3

    从结果文件生成 HTML 火焰图

    memray flamegraph memray-my_script.py.2369.bin

使用前须知

  • 仅支持 Linux 和 macOS,无法在 Windows 上安装。
  • 从源码构建需要 libunwind、lz4 和 libdebuginfod 等系统库。

标签

常见问题

memray 是什么?
面向 Python 的内存分析器,可追踪 Python 代码、原生扩展及解释器自身的内存分配,并生成多种报告。 Memray 是一款面向 Python 的内存分析器,可记录 Python 代码、C/C++ 原生扩展模块以及解释器自身发起的内存分配,并将采集数据生成火焰图、表格、树形视图和终端摘要等报告。它最常以命令行形式通过 `memray run` 使用,也可以作为库,通过 Tracker 上下文管理器进行更细粒度的分析。
memray 可以免费使用吗?用的什么许可证?
memray 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
memray 还在维护吗?
活跃维护中。memray 最近一次提交是在 2026年10月19日。
memray 适合用来做什么?
排查 Python 服务或脚本内存占用过高的原因 定位长时间运行应用中的内存泄漏 找出分配大量内存的代码热点 分析依赖 numpy、pandas 等 C 扩展的 Python 程序
memray 怎么安装和运行?
从 PyPI 用 pip 安装 Memray: python3 -m pip install memray 在分析器下运行你的脚本以记录内存分配: python3 -m memray run my_script.py 从结果文件生成 HTML 火焰图: memray flamegraph memray-my_script.py.2369.bin
在哪里获取 memray?
源代码和安装说明在 GitHub 上:https://github.com/bloomberg/memray

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目