1. CRaC(Coordinated Restore at Checkpoint)的原理,JVM 检查点与恢复的协作流程
请说明 CRaC(Coordinated Restore at Checkpoint)的原理,包括 JVM 检查点与恢复的协作流程?
- CRaC 的原理
- 检查点与恢复流程
- 与应用协作
CRaC(Coordinated Restore at Checkpoint)是 OpenJDK 项目,通过操作系统级检查点(基于 CRIU)保存 JVM 进程的完整状态,之后可从检查点快速恢复,实现近乎零开销的冷启动。原理:应用启动并预热后,触发检查点将整个进程(堆、类加载状态、JIT 编译产物、线程状态)冻结为磁盘镜像;恢复时从镜像加载,跳过重新初始化,达到毫秒级启动。协作流程:JVM 在与应用协调器(Core 接口)配合,在检查点前通知应用"准备冻结"(执行 beforeCheckpoint 清理资源),恢复时通知"已恢复"(执行 afterRestore 重建资源)。CRaC 依赖操作系统支持(Linux + CRIU),并需要应用配合处理资源(连接、文件、线程)的冻结与重建。
CRaC 的核心是"冻结全进程状态 + 应用协同清理/重建资源":检查点冻结一切,恢复免初始化的同时也需重建不可冻结的资源(连接等)。理解协作流程是正确使用的前提。