# org.gradle.launcher.daemon.server.DaemonExpirationPeriodicCheck: 守护进程将在构建结束后停止，因为它运行了3小时5分钟，且构建环境已达到最大堆大小限制

- **ID:** `cicd/gradle-daemon-stopped-memory`
- **领域:** cicd
- **类别:** resource_error
- **错误码:** `GRADLE_OOM`
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

Gradle 守护进程因 JVM 内存分配不足而耗尽堆内存，通常是由于 CI 运行器 RAM 有限或未为大项目调整 Gradle JVM 参数。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| Gradle 7.6 | active | — | — |
| Gradle 8.2 | active | — | — |
| Gradle 8.5 | active | — | — |

## 解决方案

1. ```
   Set JVM args in gradle.properties: org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m. Then restart daemon: ./gradlew --stop && ./gradlew build
   ```
2. ```
   Reduce parallel test execution: In build.gradle, set 'tasks.withType(Test).configureEach { maxParallelForks = 1 }' and 'forkEvery = 50' to limit memory per fork.
   ```

## 无效尝试

- **** — Increasing Gradle daemon heap via GRADLE_OPTS without checking CI runner limits often still fails because the runner's total memory is capped. (60% 失败率)
- **** — Disabling the daemon with --no-daemon may cause slower builds but doesn't fix OOM if the build itself is memory-hungry in the JVM process. (70% 失败率)
- **** — Adding more parallel forks with maxParallelForks can increase memory pressure, making OOM worse. (80% 失败率)
