确定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
答案 0 :(得分:2)
你的问题是正确的。 GCT
列包含JVM在年轻GC和完整GC中停止执行垃圾收集的总时间。
您可以在编写(jstat -gcutil -t <jvm-pid> 1000 1
)时使用jstat,并查看第一列以查看JVM运行的总时间。我们称之为uptime
。此时间戳和GC时间均以秒为单位。如果你想计算你没有花费在GC上的时间百分比,那么就像你写的那样:
1 - GCT / uptime
我认为调用此吞吐量有点误导。例如,如果您使用CMS收集器,则GC会与应用程序并行运行,从而降低应用程序吞吐量,而不会实际停止应用程序。