序列化热点状态
Serialize HotSpot State
JVM 预热后无法保存某种图像的技术原因是什么?假设我想在同一个平台上恢复(所以任何 JIT 的东西仍然可以工作)。
根据您使用的 JVM,已经有这样的功能。
JRockit reported to be able to, for the "normal" consumer JRE a JEP 145 存在但显然没有成功。
SO 上已经有一些关于此主题的问题,例如尝试 this one。
对于常规的 Oracle JVM 不存在这样的功能,您可以 fiddle 使用 CodeCache to have it compile functions at the earliest time possible or "warm up" 您的 JVM。
持久化 JVM 缓存会带来一些风险,就像所有缓存一样。当您的代码更改时,JIT 状态将需要失效并重新计算。如果这不会发生,您将 运行 您的程序使用旧代码。这似乎是此磁盘持久缓存仅限于 "professional" JVM 的主要原因。此外,在开始时发生的 JIT 优化被认为足够快,可以在每次开始时重复它,从而消除 运行 过时代码的风险。
JVM 预热后无法保存某种图像的技术原因是什么?假设我想在同一个平台上恢复(所以任何 JIT 的东西仍然可以工作)。
根据您使用的 JVM,已经有这样的功能。 JRockit reported to be able to, for the "normal" consumer JRE a JEP 145 存在但显然没有成功。
SO 上已经有一些关于此主题的问题,例如尝试 this one。
对于常规的 Oracle JVM 不存在这样的功能,您可以 fiddle 使用 CodeCache to have it compile functions at the earliest time possible or "warm up" 您的 JVM。
持久化 JVM 缓存会带来一些风险,就像所有缓存一样。当您的代码更改时,JIT 状态将需要失效并重新计算。如果这不会发生,您将 运行 您的程序使用旧代码。这似乎是此磁盘持久缓存仅限于 "professional" JVM 的主要原因。此外,在开始时发生的 JIT 优化被认为足够快,可以在每次开始时重复它,从而消除 运行 过时代码的风险。