我想看看碎片化是增加我的扭曲服务器的内存使用量的原因。我在这里发布了一个问题: 如何找到扭曲服务器内存使用量增加的来源?
现在,我要做的是可视化堆。找到一篇文章:内存碎片。那篇文章中的堆图就像我想要的一样。用matplotlib或者其他工具画出这样的图对我来说并不难。最困难的工作是:如何记录内存分配和释放?
我知道我可以修改 CPython 的源代码,在 omalloc.c 中添加一些日志记录代码并重新编译 Python,然后使用修改后的 CPython 来运行我的服务器。但是,我不想为此浪费时间。然后我正在寻找一些可用的工具。我知道有一个工具valgrind可以用来检测内存泄漏,但我不知道如何记录分配和释放。我看到它的 memcheck 可以检测到类似的东西:
- 无效读取
- 未初始化
- 免费无效
但这不是我想要的,我需要的是:
- 用时间、地址和大小记录内存的每次分配和释放
我的问题是:
- 我怎么能用 valgrind 做到这一点?
- 如果我不能,我应该为此编写一个模块吗?
- 或者有没有更好的工具可以做到这一点?
谢谢。