在没有JNI的情况下获得绝对纳米级

时间:2018-04-20 08:06:11

标签: java jvm

使用System.currentTimeMillis(),我们可以在vms之间使用绝对时间,但System.nanoTime()的文档说明The value returned represents nanoseconds since some fixed but arbitrary origin time...

如果我们可以精确地获得我们的jvm开始时间和这个纳米时间相对于的some fixed点,我们可以获得与毫秒大致相同的绝对纳米时间,因为其他变量不会改变它的简单数学操作远离绝对的纳米时间。

absoluteNanoTime = vmStartTimeMS * 1000 + (System.nanoTime() - nanoStartPoint)

可以使用ManagementFactory.getRuntimeMXBean().getStartTime()

找到vm的开始时间

如何从JVM获取 nanoStartPoint

因此,简而言之,目标是使绝对纳米级的工作速度与System.nanoTime一样快(忽略几个周期来进行数学运算),而不是使用JNI来调用某些依赖OS的时钟。

0 个答案:

没有答案