簡體   English   中英

如何確定JVM GC吞吐量?

[英]How to determine JVM GC throughput?

確定 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

你的問題是正確的。 GCT列包含 JVM 在年輕 GC 和完整 GC 中停止執行垃圾收集的總時間。

您可以在編寫時使用 jstat ( jstat -gcutil -t <jvm-pid> 1000 1 ) 並查看第一列以查看 JVM 運行的總時間。 讓我們稱之為uptime 此時間戳和 GC 時間都以秒為單位。 如果您想計算未花在 GC 上的時間百分比,您將按照以下方式進行操作:

1 - GCT / uptime

我認為稱這個吞吐量有點誤導。 例如,如果您使用 CMS 收集器,GC 會與應用程序並行發生,這會降低應用程序吞吐量,但實際上並不會停止應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM