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

使用tracemalloc排查内存泄漏无法获取多层调用栈帧如何解决

问题原因

你配置的tracemalloc采集栈帧深度是正确的,tracemalloc.get_traceback_limit()返回值匹配你的设置就证明采集环节没有问题。只能拿到1层栈帧的核心原因是你调用snapshot.statistics()时选择了lineno作为分组规则:

  • lineno分组规则会按照内存分配发生的代码行做聚合统计,聚合过程中只会保留栈顶的1帧用来做分组标识,其余采集到的栈帧会被丢弃,不会出现在最终返回的统计项中。
修复方法

将代码中统计内存快照的逻辑做一处修改即可:
把

top_stats = snapshot.statistics("lineno")

替换为

top_stats = snapshot.statistics("traceback")

traceback分组规则会按照完整的调用栈做聚合,会保留所有采集到的栈帧信息,修改后你调用stat.traceback.format()就能输出多层嵌套的调用栈了,符合你排查内存泄漏的需求。

内容的提问来源于stack exchange,提问作者AivanF.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:24:05