使用 NetBeans Profiler 5.5
在垃圾回收中花费的相对时间和存活年代数
“VM 遥测”标签中的“内存”标签提供了有关应用程序中垃圾回收的下列信息。
- 相对时间。相对时间是以目标 JVM 在运行垃圾回收(并暂停所有应用程序线程)时所花费的时间占总执行时间的百分比来测量的。
- 存活的年代数。这表示从 Profiler 连接至 JVM 那一刻起,在 JVM 堆上分配的全部对象的各个生存期。
- 对象生存期。对象生存期是以对象经历的垃圾回收次数来测量的。
如果此数字持续稳步增长,则通常表明某些对象出现泄漏。另一方面,如果这个量保持稳定且随后没有显著增长,则可以肯定应用程序没有任何进一步的内存泄漏。
发现内存使用量持续增长是一项很有价值的信息。在此类情况下,人们通常会怀疑出现了内存泄漏。但是,如果发现此时的存活年代数保持稳定,则问题的根源很可能不是内存泄漏,而是某些其他问题。
例如,并发线程数在不断增长,在很短的时间内为每个线程分配了大量内存。在这种情况下,您会发现内存使用量在逐渐增加,最终可能会因内存不足而导致错误。但是,这并不是内存泄漏,因为每个线程都快速释放为其分配的对象,并且实际上内存回收率非常高。
请注意,由于技术原因,当目标 JVM 使用并发标记和清理垃圾回收器时,此监视器无法正常工作。这是使用 -XX:+UseConcMarkSweepGC 或 -Xconcgc JVM 命令行选项激活的垃圾回收器。
另请参见
