Android Studio启动多Java进程致大项目构建缓慢求助
机器配置
- MacBook Pro M1 Pro
- Sonoma 14.2
- 16GB 内存
- Android Studio Giraffe Patch 3(2023年11月8日发布的最新稳定版)
问题描述
开发的项目包含74个模块,启动项目后Android Studio先启动一个Java进程,构建过程中持续创建新进程,最终生成2-3个Java进程,每个进程至少占用6GB内存(与gradle.properties配置一致),直接导致构建速度极慢。
gradle.properties 配置内容
org.gradle.jvmargs=-Xmx6g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=1g org.gradle.parallel=true org.gradle.caching=true org.gradle.configureondemand=true org.gradle.daemon=true kotlin.incremental=true kotlin.code.style=official android.nonTransitiveRClass=true org.gradle.daemon.idletimeout=60000 android.enableJetifier=true
Shell环境变量(.zshrc)
截图展示了.zshrc中的环境变量配置,包含Java、Gradle相关的路径及参数设置。
Android Studio进程情况
截图显示Android Studio启动了2-3个独立的Java进程,每个进程内存占用均在6GB以上,进程与Gradle构建任务相关。
优化解决方案
1. 下调Gradle进程堆内存上限
16GB内存无法支撑2-3个各占6GB的进程,会触发系统内存交换,严重拖慢构建速度。建议修改gradle.properties中的堆内存配置:
org.gradle.jvmargs=-Xmx3g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=1g
单个Gradle进程内存控制在4GB左右,2个进程总占用约8GB,预留足够内存给Android Studio和系统。
2. 限制Gradle守护进程数量
在gradle.properties中添加以下配置,避免同时启动过多守护进程:
org.gradle.daemon.maxParallelThreads=1 org.gradle.workers.max=2
3. 暂时关闭并行构建
内存不足时,并行构建会加剧内存竞争,建议先关闭并行,待内存压力缓解后再评估开启:
org.gradle.parallel=false
4. 检查环境变量中的重复配置
确认.zshrc中是否存在GRADLE_OPTS或JAVA_OPTS,若这些变量也设置了-Xmx参数,会覆盖gradle.properties的配置,导致进程内存超标。确保环境变量中无额外堆内存配置。
5. 清理闲置Gradle守护进程
通过终端执行以下命令,清理后台闲置的守护进程,释放内存:
./gradlew --stop
6. 优化构建缓存使用
已开启org.gradle.caching=true,可进一步在Android Studio中开启File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Build Cache的优化选项,确保缓存目录有足够存储空间。
内容的提问来源于stack exchange,提问作者Ziad

