System.currentTimeMillis() 如何获得时间
How does System.currentTimeMillis() get its time
方法System.currentTimeMillis()
是否实现了对底层操作系统进行系统调用以接收当前时间?
我问,因为据我所知,该方法运行得非常快,只需要 6 CPU 个时钟,但这没有意义,因为众所周知系统调用很慢。
我在这里错过了什么?
System.currentTimeMillis()
通常不需要切换到内核模式。 OS 提供了一种机制,允许通过将相应的内核页面直接映射到应用程序地址 space.
从用户模式读取当前时间
例如Oracle JDK 和 System.currentTimeMillis()
在 Linux 上的 OpenJDK 实现调用 glibc gettimeofday
function. This call accesses kernel data directly from user space by means of vDSO
.
方法System.currentTimeMillis()
是否实现了对底层操作系统进行系统调用以接收当前时间?
我问,因为据我所知,该方法运行得非常快,只需要 6 CPU 个时钟,但这没有意义,因为众所周知系统调用很慢。
我在这里错过了什么?
System.currentTimeMillis()
通常不需要切换到内核模式。 OS 提供了一种机制,允许通过将相应的内核页面直接映射到应用程序地址 space.
例如Oracle JDK 和 System.currentTimeMillis()
在 Linux 上的 OpenJDK 实现调用 glibc gettimeofday
function. This call accesses kernel data directly from user space by means of vDSO
.