我有定制的JFR事件。我发现RecodedEvent.getStartTime()实际上比创建和提交这个事件的时间晚了几秒钟。那么getStartTime()什么时候显示呢?
在我的例子中,我将当前时间添加到事件中,并在jfr文件解析时读取它。但是我如何在内置的事件中获得它,比如jdk.ExecutionSample。
在内置事件getLong("startTime"),中有一个字段,但是它给出了奇怪的数字,这看起来不像millis中的当前时间。那是什么?
发布于 2021-07-15 16:21:22
默认情况下,JFR使用不变的TSC来获取时间戳( System.currentMillis()或System.nanoTime()不使用)。
不变TSC允许JFR具有非常低的卵头,但在某些CPU或某些情况下,时钟可能会漂移。您可以使用命令行标志:
-xx:-UseFastUnorderedTimeStamps得到一个更精确的时钟,但在更高的开销。
从event.getLong("startTime")获得的时间是原始的滴答,通常只有当您想要与使用相同计时机制的其他系统进行比较时才有用。
https://stackoverflow.com/questions/68374752
复制相似问题