在 Health Center 垃圾回收透视图中查看诸如堆使用率、暂停时间、摘要表、对象分配和调优建议部分之类的数据。某些数据无法用于非 Java™ 应用程序。
Health Center 垃圾回收透视图包含以下视图:
堆使用率图用于识别应用程序内存使用量的趋势。如果内存占用量超出预期,堆分析工具可识别过度使用内存的领域。如果堆使用量随时间推移而不断增加,那么应用程序可能存在内存泄漏情况。如果应用程序仍引用已不再需要的对象,就会出现内存泄漏情况。 由于仍引用这些对象,因此无法对它们进行垃圾回收,从而无法释放空间以满足内存需求。随着内存消耗量的增长,就需要使用更多的处理器资源进行垃圾回收,这样留给应用程序运行的资源就相对减少。这样内存需求最终会耗尽堆,导致出现 OutOfMemoryError 异常,应用程序失败。
监控 WebSphere® Real Time for Linux JVM 时,您会看到一个关于已使用堆的图形,其中包含定期空间回收的典型模式。
暂停时间图用于评估垃圾回收的性能影响。运行垃圾回收时,所有应用程序线程都将暂停。对于某些应用程序(如批处理程序),长期暂停并不是问题。 而对于其他应用程序(如 GUI 应用程序或与其他系统交互的应用程序),长时间的垃圾回收暂停可能是不可接受的。
较长的垃圾回收暂停时间通常与较好的应用程序吞吐量相关联,而且不会造成性能问题。在垃圾回收上花费额外时间经常会改善内存分配并缩短内存访问时间。 垃圾回收调优的目标是仅当需要较短的响应时间时才缩短暂停时间。
使用对象分配视图标识正在分配大对象的代码。 您可以使用上下阈值来指定触发调用堆栈信息收集的对象范围。要了解更多信息,请参阅控制垃圾回收信息的收集(仅限 Java 应用程序)。
列标题 | 描述 |
---|---|
计数 | 该请求站点的分配请求数 |
% | 该请求站点的已记录分配的百分比 |
分配 | % 列的图形表示法 |
平均大小 (KB) | 已记录分配的平均对象大小 |
请求站点 | 分配请求的代码位置 |
使用这些视图以标识正在分配大量对象的代码。
列标题 | 描述 |
---|---|
计数 | 该对象类型的采样分配请求数 |
% | 该对象类型的采样分配的百分比 |
% | % 列的图形表示法 |
请求站点 | 分配请求的代码位置 |
已分配的对象 | 该站点中正在分配对象的类名 |
列标题 | 描述 |
---|---|
计数 | 该对象类型的采样分配请求数 |
% | 该对象类型的采样分配的百分比 |
% | % 列的图形表示法 |
总大小 (KB) | 采样分配已分配的总内存 |
已分配的对象 | 正在分配对象的类名 |
摘要表显示垃圾回收指标,包括平均暂停时间、前后两次垃圾回收之间的平均时间间隔以及垃圾回收所用的时间量。 应用程序在垃圾回收上所用的时间自身不能用作性能指标。某些垃圾回收策略(例如 IBM SDK Java Technology Edition 中的分代并发 (gencon) 策略)在垃圾回收上要花费更长的时间,但仍可提高应用程序性能。
Health Center 为 Java 应用程序提供一般的调优建议和意见。在某些特殊情形下,可能需要进一步的微调。Health Center 并不知道您的服务质量需求,因此这些建议并不始终奏效。例如,建议的更改可能提高应用程序的效率,但会延长暂停时间,这对您的应用程序来说可能并不是最理想的解决方案。调优建议还会表明应用程序是否存在内存泄漏情况。但是,Health Center 无法辨别自然增加的内存需求与持有不再需要的内存所产生的内存需求。
您可以通过裁剪操作来选择显示数据和提供建议的时间间隔。有关裁剪的更多信息,请参阅裁剪数据。