You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解读Python内存分析图?Heap与Resident Size差异解析

关于Memray中Heap Size与Resident Size的区别及图表解读

一、Heap Size与Resident Size的核心区别

Resident Size

这是系统层面统计的进程实际占用物理RAM的总大小,包含:

  • Python解释器本身的代码和内存
  • 脚本依赖的所有第三方库、系统库的加载内存
  • 进程的栈内存、堆内存
  • 内核为进程分配的其他辅助内存

你可以把它理解为操作系统视角下,这个Python进程“占了多少内存条空间”。

Heap Size

这是Python虚拟机层面统计的动态分配对象的内存总和,仅包含你的脚本运行时创建的所有Python对象(比如列表、字典、自定义类实例、字符串等)占用的内存。它是脚本运行实际用到的内存(已分配给对象的部分),不是Python内存池预留的未使用空间——Memray只会统计已经被实际使用的堆内存,预留的空闲内存不会计入。

简单说:Heap Size是你的业务代码直接产生的内存开销,Resident Size是整个Python进程的总内存占用量。

二、Memray内存图表的读取方法

以Memray默认的时间线图表为例:

  • 横轴:脚本从启动到结束的时间轴,标注了关键时间节点
  • 纵轴:内存占用量(单位通常为MB/GB)
  • 曲线含义:
    • Heap Size曲线:直接反映脚本中对象的创建与销毁情况。突然上升说明代码创建了大量对象(比如批量读取数据、生成大列表);下降说明Python垃圾回收机制回收了未被引用的对象,或者你手动释放了对象内存。
    • Resident Size曲线:变化相对平缓,因为它包含更多非业务对象的内存开销。比如脚本启动时加载解释器和库,曲线会快速上升;之后即使Heap Size下降,Resident Size可能不会立刻回落(因为操作系统不会马上回收已分配给进程的物理内存)。
  • 关键指标看峰值:
    • Heap Size峰值:对应脚本运行中内存需求最紧张的时刻,通常是业务逻辑中对象数量最多的阶段,也是内存泄漏排查的重点关注节点。
    • Resident Size峰值:是进程实际占用物理内存的最大值,反映了整个Python进程对系统内存的最高需求。
  • 差值分析:如果Heap Size远小于Resident Size,说明进程的内存开销主要来自Python解释器、依赖库等非业务代码部分,而非你的脚本逻辑。

内容的提问来源于stack exchange,提问作者Tlaloc-ES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:55:17