2012-10-18 88 views

回答

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(总堆大小)的区间中,以使单个数字代表堆碎片或使用效率。