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.