我想知道如何花时间在GC上。我认为这是可能的,因为newrelic提供有关jvm监控的这些信息。 感谢
答案 0 :(得分:5)
对于热点jvm启动带有-XX:+PrintGCDetails
的jvm,它将开始记录包含花费时间的gc事件
如果要将其重定向到文件
-Xloggc:/home/someuser/app/logs/jvm/gc.log -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails
http://www.oracle.com/technetwork/java/javase/community/vmoptions-jsp-140102.html
答案 1 :(得分:1)
如果要捕获程序中的信息,则可以使用MXBeans进行捕获。像
List<GarbageCollectorMXBean> list = ManagementFactory
.getGarbageCollectorMXBeans();
for (GarbageCollectorMXBean bean : list) {
System.out.println(bean.getCollectionTime());
}
答案 2 :(得分:0)
您可以使用JVM分发提供的jstat
工具。运行jstat -gc <pid>
。它将显示与您的问题相关的以下值:
GCT
列中:自JVM启动以来在GC中花费的总秒数FGCT
列中:自JVM启动以来在完整 GC中花费的总秒数YGCT
列中:自JVM启动以来在 Young Gen GC中花费的总秒数