在技术上是否可以创建 Java 虚拟机的映像文件并使用它来更快地启动 Java 应用程序

Is it technically possible to create an image file of the Java Virtual Machine and use that for faster Java Application startup?

本文关键字:Java 应用程序 启动 文件 是否 创建 虚拟机 在技术上 映像      更新时间:2023-10-16

我想让我的应用程序启动时间大大加快。

我相信,如果我可以将应用程序的整个状态存储在运行 java 虚拟机的进程的内存空间上,那么我还应该能够创建一个新的 java 进程并将其内存内容替换为保存在图像文件中的状态。

我的理论是,如果我这样做,我可以更快地启动我的应用程序几秒钟,它将与我读取文件并将其放入 jvm 的正确内存区一样快。

您可以使用序列化来编写应用程序的状态(但是要注意对象图中的循环),然后在启动时对其进行反序列化,但这与创建 JVM 进程的映像并不完全相同。您仍然需要加载类并实例化一些基本的基础结构来引导应用程序,并且您将不会处于相同的内存和 JIT 状态。JVM从你那里抽象出很多东西,所以你无法访问"正确的内存区域"。

它是否会对应用程序的启动时间产生积极影响实际上取决于最初从何处加载状态以及构建成本