0

有谁知道是否有任何工具可以使用堆转储计算堆碎片?

4

2 回答 2

0

我有一个可视化堆的工具(http://bobah.net/d4d/tools/cpp-heapmap),但它使用 {op;address;size} 三元组列表,而不是原始堆转储。您可以使用它来直观地估计堆的糟糕程度。在某些情况下,这已经足够了。它的 malloc 拦截器显然不适合 Java 应用程序,但 UI 并不关心数字来自哪里,而是会显示来自任何来源的数字。

但是让我们假设我们能够从转储中构建一个堆映射(我相信有人会在这里准确地回答)。问题的主要部分是计算碎片曲线 F(s), s - 目标分配大小。F(s) - (total_free_space/s) 与考虑特定堆布局实际可以分配的大小为 s 的块数之比。

一旦 F(s) 建立起来,就可以在从 1 到 S(总堆大小)的区间内对其进行积分,以获得表示堆碎片或使用效率的单个数字。

于 2012-10-18T08:25:09.233 回答
0

IBM 垃圾收集和内存分析器非常适合这类事情,而且是免费的。

于 2012-10-18T08:26:16.733 回答