首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >内存碎片探查器

内存碎片探查器
EN

Stack Overflow用户
提问于 2009-09-06 21:30:04
回答 3查看 8.9K关注 0票数 20

有没有好的内存碎片分析器?(linux的gcc版本会更好)。Valgrind无法分析这一点,因为它使用自定义的malloc/free函数。

谢谢,安德鲁

EN

回答 3

Stack Overflow用户

发布于 2009-09-07 04:58:38

我会从mtrace开始。当您有一个跟踪时,glibc附带了一个perl脚本mtrace(1),它可以查找泄漏。但是,跟踪格式很容易理解,因此应该直接将其处理为碎片分析。

票数 5
EN

Stack Overflow用户

发布于 2009-09-06 22:57:02

我很难理解您可能找到的任何工具如何理解您的自定义内存管理的段数据结构。您也许能够获得繁忙的发行版(挂接到malloc/ free中),但自由发行版(本质上是碎片)似乎悬而未决。

那么为什么不向您的自定义内存管理器添加忙/闲统计/直方图呢?如果存储箱的索引与log2(大小)成正比,则O(1)为了在拆分和合并时保持这些统计信息,您知道大小,并且可以使用与log2(大小)成比例的索引直接查找存储箱

例如直方图的二进制间隔

[2^n,2^(n+1) ) ...

(例如,如果你想要更好的箱子,使用对数平方根2(大小),它可以通过x86位扫描,比较,设置,相加的4个整数指令来计算)

可以使用的另一组合理的存储箱大小是以下开放间隔

[2^n,2^n+2^(n-1) ),[2^n+2^(n-1),2^(n+1) ]...

又一次容易计算的位扫描、移位和加法)

票数 1
EN

Stack Overflow用户

发布于 2009-09-06 23:29:18

nedmalloc是一个非常好的自定义分配器,附带源代码,经过优化以避免碎片。

我会将其插入,并开始查看其内部日志以获取碎片统计信息。

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

https://stackoverflow.com/questions/1386776

复制
相关文章

相似问题

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