Gradle怎么停止后台Daemon进程

秋磊吖_8491

秋磊吖_8491

2026-10-24

722人浏览

原创

./gradlew --stop 是 gradle 官方推荐的唯一标准方式,可精准终止当前版本所有守护进程,避免手动杀进程导致锁文件残留或版本混淆。

gradle怎么停止后台daemon进程

直接用 ./gradlew --stop 就能终止当前版本的所有 Daemon 进程

这是 Gradle 官方推荐的唯一标准方式,不需要手动查 PID 或杀进程。它会自动定位并终止所有由**相同 Gradle 版本**启动的守护进程(比如你用的是 gradle-6.7.1,--stop 就只关掉这一版的 Daemon)。

常见错误是误以为 Ctrl+C 或关闭终端就能结束 Daemon —— 实际上它在后台继续运行,直到 3 小时空闲超时才自动退出。如果构建卡住、内存暴涨或出现 Gradle build daemon disappeared unexpectedly,大概率是旧 Daemon 残留导致的。

  • 执行前确保你在项目根目录下(有 gradlew 文件)
  • 命令不依赖 JDK 环境变量,但需要 gradlew 可执行权限(Linux/macOS 下可能需先 chmod +x gradlew)
  • Windows 用户用 gradlew.bat --stop 效果相同

为什么不用 jps + kill 手动杀?

虽然 jps | grep GradleDaemon 能看到进程,但手动 kill -9 容易出问题:

  • 多个 Gradle 版本共存时,jps 列出的 GradleDaemon 进程无法区分对应哪个版本,--stop 才能精准匹配
  • kill -9 强制终止会跳过 Daemon 的清理逻辑,可能导致 .gradle/daemon/ 下的锁文件残留,下次启动时报 Address already in use
  • CI 环境(如 Jenkins)中,jps 可能因权限或容器隔离根本看不到进程,而 --stop 始终有效

CI/CD 场景下更该禁用 Daemon 而非频繁停止

Jenkins、GitLab CI 等环境通常使用临时容器或干净工作区,每次构建都是全新上下文。此时 Daemon 不仅没加速效果,反而因缓存无效、JVM 内存占用高引发崩溃(典型报错:Could not reserve enough space for 1572864KB object heap)。

  • 在构建命令里加 --no-daemon:例如 ./gradlew assembleDebug --no-daemon
  • 也可在 gradle.properties 中设 org.gradle.daemon=false,但 CI 脚本里显式传参优先级更高
  • 注意:禁用后每次构建都会新建 JVM,耗时略增,但稳定性大幅提升

停止后仍不生效?重点检查 .gradle/daemon/ 缓存目录

--stop 成功后,如果下次构建仍复用旧状态(比如编译速度异常快或报缓存冲突),说明 Daemon 相关元数据没清干净。

  • Linux/macOS:删掉 ~/.gradle/daemon/ 目录(不是整个 .gradle)
  • Windows:C:\Users\<username>\.gradle\daemon\</username>
  • 删除后无需重启机器,再跑一次 ./gradlew --stop + 正常构建即可重建干净 Daemon

这个目录存放的是各 Gradle 版本的守护进程通信 socket 和状态文件,残留会导致新 Daemon 启动失败或行为异常——这点最容易被忽略。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java Maven/Gradle 构建与依赖管理合集
Java Maven/Gradle 构建与依赖管理合集

系统讲解 Java 项目构建工具的使用与进阶配置,涵盖 Maven 的 POM 文件结构、生命周期(clean/compile/package/install/deploy)与插件机制、依赖范围(compile/provided/test/runtime)与传递依赖管理、多模块聚合与继承、私有 Nexus 仓库发布,以及 Gradle 的 Groovy / Kotlin DSL 语法、Task 自定义与增量构建、依赖版本目录(Versi

2026.05.09

369

25

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

40

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

20

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

20

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

20

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

20

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

20

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

140

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Gradle 9 主版本升级指南
Gradle 9 主版本升级指南

共0课时 | 0人学习

Gradle 安全最佳实践
Gradle 安全最佳实践

共0课时 | 0人学习

Gradle 依赖校验手册
Gradle 依赖校验手册

共0课时 | 0人学习