为常用库做一些 JVM 缓存静态初始化结果 类
Do some JVMs cache static initializer results, for commonly used library classes
由于 JVM 启动时间似乎是一个关注点,因此缓存一些更复杂的静态初始化程序的结果是否有意义,例如 java.lang.invoke.MethodType
(以及其他 java.lang
类 具有复杂的初始化逻辑)。在 运行 一次后,JVM 将能够更快地启动。此外,我相信静态初始化器从不包含某些 JIT 优化,因此一些静态初始化器可能非常慢。我想缓存只能在纯静态初始化器上工作,所以任何缓存都可能必须限制在标准库中。是否有任何 JVM 实现对静态初始化的 类 进行某种缓存?
是的。例如,GraalVM Native Image 可以在构建时初始化某些 类 一次。
请参阅 --initialize-at-build-time=
选项。
由于 JVM 启动时间似乎是一个关注点,因此缓存一些更复杂的静态初始化程序的结果是否有意义,例如 java.lang.invoke.MethodType
(以及其他 java.lang
类 具有复杂的初始化逻辑)。在 运行 一次后,JVM 将能够更快地启动。此外,我相信静态初始化器从不包含某些 JIT 优化,因此一些静态初始化器可能非常慢。我想缓存只能在纯静态初始化器上工作,所以任何缓存都可能必须限制在标准库中。是否有任何 JVM 实现对静态初始化的 类 进行某种缓存?
是的。例如,GraalVM Native Image 可以在构建时初始化某些 类 一次。
请参阅 --initialize-at-build-time=
选项。