扫码阅读
手机扫码阅读

利用 CRaC,将 Java 应用程序恢复启动时间缩短到几毫秒

63 2024-07-04

摘要

BellSoft发布了带有检查点协调恢复(CRaC)功能的Liberica JDK 17和21版本。此功能让开发者可以在任意时间点创建运行中应用程序的快照,并能在几毫秒内使用快照恢复应用状态。CRaC基于Linux的CRIU技术,只支持Linux系统下的x86_64和AArch64 CPU架构。

CRaC能够保存应用程序的状态,包括Java堆、JIT编译代码、本机内存和设置等。开发者需要确保快照中不包含敏感数据。CRaC允许通过JavaRandom类生成的种子来实现快照恢复时的随机数可预测性,但建议使用Java SecureRandom类来增强随机性。协调检查点和恢复确保应用在暂停和重启时能够处理网络连接和文件描述符,也支持在应用未准备好时取消检查点。

启动带有CRaC功能的应用需要指定保存JVM数据的目录。创建快照则通过jcmd命令实现,恢复时则指定包含快照的目录。尽管其他方案如GraalVM的AOT编译和Quarkus的AppCDS也能加速应用启动,它们并不支持运行时的JIT编译优化。

Bellsoft建议,CRaC适合于短时间运行、低CPU限值、需要复制和频繁重启的应用。CRaC最初由Azul开发,现为OpenJDK项目的一部分,已被包括Spring Boot、Quarkus、Micronaut和AWS Lambda SnapStart在内的工具支持。更多信息可参考Bellsoft性能架构师Dmitry Chuyko的博文。

想要了解更多,点击 查看原文

为一线互联网公司核心技术人员提供优质内容。科技圈的观察者,前沿技术的传播者。

94 篇文章
浏览 3995
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设 白皮书上线