我正在运行Java程序,我需要花费多少时间来收集垃圾。
我找到了这两个JVM标志:
-XX:+PrintGCApplicationConcurrentTime
-XX:+PrintGCApplicationStoppedTime
但我无法找到有关它的信息。
我想PrintGCApplicationStoppedTime
打印申请时间在STW中的时间,但我不确定-XX:+PrintGCApplicationConcurrentTime
。是否打印应用程序与集合线程并发执行的时间?
提前致谢。
答案 0 :(得分:6)
这些标志的名称不是很准确。
PrintGCApplicationStoppedTime
显示应用程序在安全点停止的时间。大多数情况下,安全点是由垃圾收集的世界各个阶段引起的,many other reasons exist。
PrintGCApplicationConcurrentTime
是应用程序在不停止的情况下运行的时间,即两个连续安全点之间的时间。
答案 1 :(得分:0)
您使用这些标志知道您的申请多长时间 在垃圾收集之间运行。
最终可以从中计算出来
GC日志但是查看该信息的便捷方式
命令行标记-XX:+PrintGCApplicationStoppedTime
和
-XX:+PrintGCApplicationConcurrentTime
。
将这些添加到命令行会产生如下输出:
Application time: 0.2863875 seconds
Total time for which application threads were stopped: 0.0225087 seconds
Application time: 0.1476791 seconds
Total time for which application threads were stopped: 0.0255697 seconds
应用程序运行(在第一行中报告)大约287毫秒,然后是 停止了大约22毫秒(在第二行报告)。
标志可以单独使用,也可以一起使用。