【问题标题】:How to calculate heap fragmenation statistics using heap dumps如何使用堆转储计算堆碎片统计信息
【发布时间】:2012-10-08 15:15:21
【问题描述】:

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

【问题讨论】:

  • 您使用的收集器是否存在碎片问题?
  • mat toot 是否提供碎片统计信息?我不这么认为。

标签: java garbage-collection heap-memory fragmentation


【解决方案1】:

我有一个可视化堆的工具 (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(总堆大小)的区间内对其进行积分,得到一个表示堆碎片或使用效率的数字。

【讨论】:

    【解决方案2】:

    IBM Garbage Collection and Memory Analyzer 非常适合这类事情,而且是免费的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 2011-06-02
      • 2014-07-14
      • 2010-09-14
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多