Memory 如何记录程序中内存的每次分配和释放?

Memory 如何记录程序中内存的每次分配和释放?,memory,heap,valgrind,fragmentation,Memory,Heap,Valgrind,Fragmentation,我想看看碎片是不是我的twisted服务器内存使用率增加的原因。我在这里发布了一个问题: 现在,我要做的是可视化堆。我发现一篇文章:。那篇文章中的堆的数字和我想要的一样。用matplotlib或其他工具绘制这样的图形对我来说并不困难。最困难的工作是:如何记录内存分配和释放 我知道我可以修改CPython的源代码,在omalloc.c中添加一些日志代码并重新编译Python,然后使用修改后的CPython运行我的服务器。但是,我不想浪费时间。然后我正在寻找一些可用的工具。我知道有一个工具可以用来

我想看看碎片是不是我的twisted服务器内存使用率增加的原因。我在这里发布了一个问题:

现在,我要做的是可视化堆。我发现一篇文章:。那篇文章中的堆的数字和我想要的一样。用matplotlib或其他工具绘制这样的图形对我来说并不困难。最困难的工作是:如何记录内存分配和释放

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

  • 无效读取
  • 未初始化
  • 无效自由
但这不是我想要的,我需要的是:

  • 记录每次内存分配和释放的时间、地址和大小
我的问题是:

  • 我怎样才能用valgrind做到这一点
  • 如果我不能,我应该为此编写一个模块吗
  • 还是有更好的工具可以实现这一点

  • 谢谢。

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


    我知道有一个“别针”工具,也许值得一看:

    你看过瓦尔格兰德地块了吗?