gpt4 book ai didi

java - 是否可以在应用程序启动之间将 JVM 保留在内存中?

转载 作者:行者123 更新时间:2023-11-30 10:38:47 25 4
gpt4 key购买 nike

Java documentation says :

Small utility applications that run only for a short time may suffer a performance hit if the JVM and Java application startup time is long.

我想知道是否可以在应用程序启动之间将 JVM(而不是它的“状态”)保留在内存中以避免启动延迟?

编辑 我认为投票结束这个问题的 2 个人甚至都没有读过它。 JVM 和 JVM 状态是两个不同的东西。我问的是将 JVM 保存在内存中,而不是将 JVM 状态保存到文件,就像另一个问题一样。前者的目标是节省启动时间。后者根本不这样做。

最佳答案

请注意,引用的句子只是一个条件(中间有一个“if”)并且省略了技术术语,基本上是说:

… that run only for a short time may suffer … if … startup time is long.

显然,此声明非常基础(真实但微不足道),您可以将其应用到任何事物,包括您的汽车或电视。回到打开电视意味着加热 pipe 的时代,看短片可能会因为启动时间长而受到影响。

在任何时候,该声明都不是说存在这样的问题。因此,您不仅得出了存在此类问题的错误结论,通过询问“是否有可能将 JVM 保留在内存中”,您暗示此问题(如果存在)是由 JVM 未保留在内存中引起的, 没有任何支持这一假设。

“JVM”由几个组件组成。 native 代码通常作为 native 共享库提供,由操作系统加载并保存在内存中。 JRE 的类存储在 shared archive 中它将被内存映射,因此,在 JVM 实例之间共享并保存在内存中,类似于构成 JVM 的 native 库,如果操作系统决定有足够的未使用内存。

其他资源和应用程序的代码是使用常规 I/O 读取的,操作系统层仍然会利用未使用的内存进行缓冲。内存映射库和共享类数据的不同之处在于,在从已缓存的文件中读取时,将有一个必要的复制步骤。但是,当然,这仍然比实际从硬盘驱动器读取要快。

总而言之,“将JVM保留在内存中”已经成为事实,对于那些可以保留和重用的部分,改进潜力很小。您可以通过在刚启动的计算机上启动一个小应用程序(例如 hello world)轻松验证它,然后使用相同的 JVM 再次运行相同的应用程序,您会注意到第二次运行的启动时间显着减少。

您可能认为与使用例如 hello world 相比,第二次运行的启动时间仍然很长一种脚本语言,但这不是在内存中保留或不保留 JVM 组件的问题。这也是非常主观的,考虑哪个启动时间足够长以考虑应用程序是否遭受它。

关于java - 是否可以在应用程序启动之间将 JVM 保留在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39579134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com