Rya*_*yan 10 java performance garbage-collection jvm java-ee
我正在使用jstat来获取GC操作的总累计时间,即GCT
所以,假设GCT是2秒,我的JVM进程启动了60秒,我是在四核服务器上运行,所以我的GC%是
2 / 60 * 4 = 0.83%
Run Code Online (Sandbox Code Playgroud)
我的计算是否正确?
不,您的计算不准确,因为这样,您不知道操作系统允许程序运行的确切时间.
假设您要考虑GC完全停止应用程序的时间(暂停时间),您可以使用以下JVM选项:
-XX:+PrintGCApplicationConcurrentTime
-XX:+PrintGCApplicationStoppedTime
Run Code Online (Sandbox Code Playgroud)
这个选项将使JVM打印到stdout:
Application time: 3.3319318 seconds
Total time for which application threads were stopped: 0.7876304 seconds
Application time: 2.1039898 seconds
Total time for which application threads were stopped: 0.4100732 seconds
Run Code Online (Sandbox Code Playgroud)
然后,您可以总结应用程序停止的时间,并将其除以应用程序时间加上暂停时间的总和,以获得更改器利用率(GC不会暂停应用程序的时间分数).
不,不是真的。您的计算假设 java 进程在整个时间内对所有 4 个核心的利用率为 100%。
正确的计算是,(time spent in logic) / (time spent in gc)但获取第一条信息通常需要分析器。
| 归档时间: |
|
| 查看次数: |
3366 次 |
| 最近记录: |