【问题标题】:How to record every allocations and deallocations of memory on a program?如何记录程序上的每个内存分配和释放?
【发布时间】:2011-01-08 04:54:04
【问题描述】:

我想看看我的扭曲服务器内存使用量增加的原因是碎片。我在这里发布了一个问题: How to find the source of increasing memory usage of a twisted server?

现在,我要做的是可视化堆。我找到了一篇文章:Memory fragmentation。那篇文章中的堆图就像我想要的一样。用matplotlib或者其他工具画出这样的图对我来说并不难。最困难的工作是:如何记录内存分配和释放?

我知道我可以修改 CPython 的源代码,在 omalloc.c 中添加一些日志记录代码并重新编译 Python,然后使用修改后的 CPython 来运行我的服务器。但是,我不想为此浪费时间。然后我正在寻找一些可用的工具。我知道有一个工具 valgrind 可以用来检测内存泄漏,但我不知道如何记录分配和释放。我看到它的 memcheck 可以检测到类似的东西:

  • 读取无效
  • 未初始化
  • 免费无效

但这不是我想要的,我需要的是:

  • 用时间、地址和大小记录每次内存分配和释放

我的问题是:

  1. 如何使用 valgrind 做到这一点?
  2. 如果我不能,我应该为此编写一个模块吗?
  3. 或者有没有更好的工具可以做到这一点?

谢谢。

【问题讨论】:

标签: memory heap-memory valgrind fragmentation


【解决方案1】:

回答有关替代工具的问题:

我知道有“Pin”工具,也许值得一试:http://www.pintool.org/

【讨论】:

    猜你喜欢
    • 2020-05-19
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 2020-11-09
    相关资源
    最近更新 更多