"PS Old Gen" 中 100% 的峰值使用率是否表示过度垃圾收集?
Is peak usage of 100% in "PS Old Gen" symptomatic of excessive garbage collection?
我正在调查 Java 8 (1.8.0_45) 和 Tomcat 8 (8.0.26) 上 Web 应用程序 运行 的吞吐量损失问题。
我有关于 PS 老一代内存使用情况的信息:
"PS Old Gen" (Heap memory)
--------------------------
Current usage 535451120/716177408 (74.77%, 180726288 free)
Max possible 716177408
Peak usage 716170120/716177408 (100.00%, 7288 free)
Max possible 716177408
Usage after last GC 351438392/716177408 (49.07%, 364739016 free)
Max possible 716177408
我们正在使用这些设置(我认为不相关的其他设置):
-XX:+HeapDumpOnOutOfMemoryError
-XX:-UseGCOverheadLimit
-XX:MaxMetaspaceSize=256m
PS老一代满级正常吗?这个 space 的集合是只在它变满时触发,还是通常会更早发生?
我不认为存在长期 运行 内存泄漏,因为上次 GC 后的使用率显示只有 49% 的使用率。该应用程序通常还具有良好的正常运行时间,而不会显示总体堆使用量增加(通过 JMX 监控)。
它恢复 51% 的事实很有希望,但真正的问题是 Full GC 的频率 运行ning。您可以打开 GC 日志记录以推测更多信息,例如您使用 GC 的频率 运行、阻塞多长时间以及 GC 的类型 运行。这是通过 -Xloggc:path 打开的,还有一些额外的细节可以打开,比如 -XX:PrintGCDetails 和 -XX:PrintGCTimeStamps
您可以按照@Michael 的建议启用 GC 日志记录到文件。是的,因为就应用程序线程而言,完整的 GC 是 "stop the world" 操作,它的频率将是真正令人担忧的原因。 GCViewer 是一个非常有用的可视化和总结 GC 的工具,它可以帮助您可视化 GC 统计信息收集时间段内 JVM 中发生的事情。我建议在您认为吞吐量受到影响的相当长的时间内收集应用服务器的 GC 信息,然后使用 GCViewer。对我们这样的分析帮助很大。
我正在调查 Java 8 (1.8.0_45) 和 Tomcat 8 (8.0.26) 上 Web 应用程序 运行 的吞吐量损失问题。
我有关于 PS 老一代内存使用情况的信息:
"PS Old Gen" (Heap memory)
--------------------------
Current usage 535451120/716177408 (74.77%, 180726288 free)
Max possible 716177408
Peak usage 716170120/716177408 (100.00%, 7288 free)
Max possible 716177408
Usage after last GC 351438392/716177408 (49.07%, 364739016 free)
Max possible 716177408
我们正在使用这些设置(我认为不相关的其他设置):
-XX:+HeapDumpOnOutOfMemoryError
-XX:-UseGCOverheadLimit
-XX:MaxMetaspaceSize=256m
PS老一代满级正常吗?这个 space 的集合是只在它变满时触发,还是通常会更早发生?
我不认为存在长期 运行 内存泄漏,因为上次 GC 后的使用率显示只有 49% 的使用率。该应用程序通常还具有良好的正常运行时间,而不会显示总体堆使用量增加(通过 JMX 监控)。
它恢复 51% 的事实很有希望,但真正的问题是 Full GC 的频率 运行ning。您可以打开 GC 日志记录以推测更多信息,例如您使用 GC 的频率 运行、阻塞多长时间以及 GC 的类型 运行。这是通过 -Xloggc:path 打开的,还有一些额外的细节可以打开,比如 -XX:PrintGCDetails 和 -XX:PrintGCTimeStamps
您可以按照@Michael 的建议启用 GC 日志记录到文件。是的,因为就应用程序线程而言,完整的 GC 是 "stop the world" 操作,它的频率将是真正令人担忧的原因。 GCViewer 是一个非常有用的可视化和总结 GC 的工具,它可以帮助您可视化 GC 统计信息收集时间段内 JVM 中发生的事情。我建议在您认为吞吐量受到影响的相当长的时间内收集应用服务器的 GC 信息,然后使用 GCViewer。对我们这样的分析帮助很大。