java - 技术上是否可以创建 Java 虚拟机的镜像文件并将其用于更快的 Java 应用程序启动?

标签 java c++ java-native-interface virtual-machine

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

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

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

最佳答案

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

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

关于java - 技术上是否可以创建 Java 虚拟机的镜像文件并将其用于更快的 Java 应用程序启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13671813/

相关文章:

java - 为构造函数创建 java native 方法

java - 如何使用另一个 JFrame 中的数据更新 JFrame?

java - 如何退出 iframe?

c++ - DropBox 会干扰 DeleteFile()/rename()

c++ - 限制 C 中的限定符与 LLVM IR 中的 noalias 属性

java - 如何更改专有代码从 Android 上加载库的位置?

android - 使用 ADT/Eclipse 为 NDK 设置 C++11 (std::thread)

java - 我们是否应该在 kubernetes 容器中设置 -Xmx(最大 Java 堆大小)

java - 没有编码器发现嵌套 Java 类的错误

c++ - 为什么我的打印功能不起作用?链表