【问题标题】:Understanding the Surviving Generations Metric了解幸存世代指标
【发布时间】:2012-03-09 00:15:56
【问题描述】:

Netbeans 的内存监控工具(与 VisualVm 相同的工具)有一个用于跟踪内存泄漏的有趣指标:Surviving Generations Metric。

definition of this metric 可以在 oracle.com 上找到:

  • 一代是在同一 GC 间隔内(两个垃圾回收之间)创建的一组实例
  • 幸存一代是至少在一次垃圾收集中幸存下来的一代。幸存的垃圾回收数量 - 一代的年龄 - 是它的唯一标识符
  • Surviving Generations(指标)值是当前在堆上存活的不同 Surviving Generations 的数量(具有不同世代年龄的 Generations 数量)

我对第二个定义有疑问。我知道 instance 在垃圾收集中存活下来意味着什么。但我不确定一代在垃圾收集中存活下来意味着什么。这是否意味着至少有一个代的实例在垃圾收集中幸存下来?

【问题讨论】:

  • 小修正:Netbeans 的内存监控工具不是嵌入式VisualVM。 VisualVM 包含精简版的 NetBeans Profiler。 VisualVM 中的 CPU 和内存分析基于 NetBeans Profiler 代码。
  • 感谢您的信息。我更新了我的问题。

标签: java netbeans memory-leaks garbage-collection visualvm


【解决方案1】:

是的。基本上这意味着,在垃圾收集 X 和 X+1 之间创建的实例中,有一些现在还活着,当更多的垃圾收集发生时。

在我看来,所有三个定义只对每个班级有意义。我的意思是,给定类的“Surviving Generations (metrics) value”是这个类现在在堆上存活的不同 Generations 的数量。

【讨论】:

  • 是的,感谢您指出 NetBeans/VisualVM 能够为每个类提供此指标。而且对于跟踪内存泄漏确实是非常有用的信息!
猜你喜欢
  • 2010-09-14
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 2021-08-08
  • 2013-08-26
  • 2018-01-23
相关资源
最近更新 更多