java - 了解幸存世代指标

标签 java netbeans memory-leaks garbage-collection visualvm

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

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

  • Generation 是在相同的 GC 间隔内(两次垃圾回收之间)创建的一组实例
  • 幸存一代是至少在一次垃圾回收中幸存下来的一代。幸存的垃圾收集次数 - 代的年龄 - 是其唯一标识符
  • Surviving Generations(指标)值是当前在堆上存活的不同 Surviving Generations 的数量(number of Generations with different generation ages)

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

最佳答案

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

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

关于java - 了解幸存世代指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9330931/

相关文章:

java - java中如何求中位数

java - 重构数据库Helper

tomcat - Netbeans ec2 tomcat 服务器服务器位置无效

java - 无法在请求的时间内获得锁定问题

Android:画廊内存不足异常

c++ - 调用 std::vector<Class type> 的析构函数使 for_each 无效

java - Eclipse Android java.lang.NoClassDefFoundError

java - 在 Glassfish/Payara 上禁用或隐藏 "ejb-timer-service-app"

java - 为什么在使用 Java (Netbeans) 连接到 MySQL 时出现此错误 'Communications link failure The last packet sent...'?

c# - 在非静态方法中使用静态成员会导致内存泄漏吗?