我想让我的应用程序启动时间大大加快。
我相信,如果我可以存储应用程序的整个状态,因为它存在于运行 Java 虚拟机的进程的内存空间中,那么我也应该能够创建一个新的 Java 进程并将其内存内容替换为图像文件中保存的状态。
我的理论是,如果我这样做,我可以更快地启动我的应用程序几秒钟,它会尽可能快地读取文件并将其放入 jvm 的正确内存区域。
最佳答案
您可以使用序列化来编写应用程序的状态(不过要注意对象图中的循环),然后在启动时将其反序列化,但这与创建 JVM 进程的图像并不完全相同。您仍然需要加载类并实例化一些基本的基础设施来引导应用程序,并且您不会处于相同的内存和 JIT 状态。 JVM 从您那里抽象出很多东西,因此您无权访问“正确的内存区域”。
它是否会对应用程序的启动时间产生积极影响实际上取决于状态最初从何处加载以及构建成本有多少。
关于java - 技术上是否可以创建 Java 虚拟机的镜像文件并将其用于更快的 Java 应用程序启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13671813/