首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试CPython内存碎片

调试CPython内存碎片
EN

Stack Overflow用户
提问于 2020-05-06 15:05:31
回答 1查看 448关注 0票数 6

我有一个长期运行的CPython 3.8进程.过了一会儿,它使用了大量的RAM。我试过了

  1. 运行gc.collect()
  2. 使用pympler发现所有已知的Python对象
代码语言:javascript
复制
import gc
import psutil
from pympler import muppy, summarize

gc.collect()
total_ram = psutil.Process().memory_info().rss
all_objects = muppy.get_objects(include_frames=True)
s = summary.summarize(all_objects)
python_objects_size = sum(row[2] for row in s)

输出:102个MiB Python对象,824 MiB RSS内存!

使用tracemalloc编辑3.它还返回~100 EDIT值的python对象

编辑2 export PYTHONMALLOC=malloc不能解决问题。

是否有方法查询CPython内存管理器以找出

  • 它保存了多少内存,这样我就可以从RSS中减去它,并找出是否有任何C库不使用PyMem_Malloc并且正在泄漏。
  • 存储内存的原因(例如,发现它保存了一个64 it的页面,因为一个20字节的PyObject仍在被引用)
  • 标识调用PyMem_Malloc之后从未释放内存的C模块
  • 跟踪OS级malloc()和free(),并将它们与pymalloc执行的比较,以确定是否有一个C库分配内存,而不是使用PyMem_Malloc。

相关

EN

回答 1

Stack Overflow用户

发布于 2020-05-27 07:39:49

也许可以尝试另一个内存调试器。与python一起使用缬磨是可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61638592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档