如何确定JVM GC吞吐量?

时间:2016-05-30 10:25:02

标签: java garbage-collection jvm

确定Oracle Java 8 JVM垃圾收集器吞吐量的最简单方法是什么?最好使用JDK命令行工具?

使用jstat命令,我可以获得总垃圾收集时间(GCT列)。基于将此值的更改与GC日志进行比较,似乎jstat输出的GCT值是累计GC经过的时间(以秒为单位)(自JVM启动以来)。 这是对的吗?

那么,我可以像这样计算GC吞吐量吗?

1 - GCT / time_since_jvm_start

jstat可用于获取自JVM启动以来使用以下命令的GC和时间:

jstat -gcutil -t <jvm-pid> 1000 1

1 个答案:

答案 0 :(得分:2)

你的问题是正确的。 GCT列包含JVM在年轻GC和完整GC中停止执行垃圾收集的总时间。

您可以在编写(jstat -gcutil -t <jvm-pid> 1000 1)时使用jstat,并查看第一列以查看JVM运行的总时间。我们称之为uptime。此时间戳和GC时间均以秒为单位。如果你想计算你没有花费在GC上的时间百分比,那么就像你写的那样:

1 - GCT / uptime

我认为调用此吞吐量有点误导。例如,如果您使用CMS收集器,则GC会与应用程序并行运行,从而降低应用程序吞吐量,而不会实际停止应用程序。