Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java垃圾收集GcInfo.getDuration()将单位从毫秒更改为微秒_Java_Logging_Garbage Collection_Garbage - Fatal编程技术网

Java垃圾收集GcInfo.getDuration()将单位从毫秒更改为微秒

Java垃圾收集GcInfo.getDuration()将单位从毫秒更改为微秒,java,logging,garbage-collection,garbage,Java,Logging,Garbage Collection,Garbage,我目前正在处理com.sun.management.GcInfo类的一些麻烦。 我通过添加GC通知侦听器改进了服务器日志。每当一个主要GC发生时,我都会记录它的持续时间(以及其他一些东西)。 “官方”方法是为GarbageCollectorMXBean添加一个通知侦听器。 一切正常。我得到了GC的信息,对于每个垃圾收集器,我得到一个 具有持续时间的com.sun.management.GcInfo对象。我的烦恼是,当前的文档7u51规定duation的值以毫秒为单位。 我也在7u11下运行了我们

我目前正在处理com.sun.management.GcInfo类的一些麻烦。 我通过添加GC通知侦听器改进了服务器日志。每当一个主要GC发生时,我都会记录它的持续时间(以及其他一些东西)。 “官方”方法是为GarbageCollectorMXBean添加一个通知侦听器。 一切正常。我得到了GC的信息,对于每个垃圾收集器,我得到一个 具有持续时间的com.sun.management.GcInfo对象。我的烦恼是,当前的文档7u51规定duation的值以毫秒为单位。 我也在7u11下运行了我们的服务器应用程序,持续时间似乎要高出1000=>微秒。 有人知道这方面的情况吗?他们在哪一个Java版本中改变了这一点?

这是JVM中的一个例子。GcInfo方法返回的是滴答声,而不是毫秒

这就是bug描述所说的:

从ManagementFactory中获取GarbageCollectorMXBean时,现在可以(在Java 7中)将底层bean实现转换为NotificationBroadcaster并添加NotificationListener。这样做会导致JVM在GC事件完成后报告它们。在JVM中,GCNotifier::pushNotification将“原始”GCStatInfo数据(包含开始/结束标记)放入请求队列。GCNotifier::sendNotification从该数据构造GcInfo,而不将刻度转换为毫秒。当侦听器访问GcInfo对象时,对getDuration()的调用将返回经过的刻度与经过的毫秒(与源代码中的注释相反)


因此,您应该使用JVM版本7u51或更高版本来获得正确的GC信息。

Hi!我也有同样的问题,但这门课的开始和结束都有问题。我的服务器运行的是OracleJDK7U6,对于开始和结束时间,我得到了奇怪的结果:1530938772677。该值在API中描述为JVM启动后的毫秒数。。。所以这个值毫无意义。这也不是一个划时代的时刻,因为价值将在未来。我看不到这方面的任何信息。。。