Gradle sync failed: Unable to start the daemon process.
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Gradle Daemon 是長期運行的建構進程,預設最大堆內存由 `org.gradle.jvmargs` 控制。常見配置:
# gradle.properties
org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
問題核心:`-Xmx1024m` 要求 1GB 連續堆內存,但**宿主機物理內存不足**(如 2GB RAM,系統佔用 1GB+,剩餘不足 1GB 連續空間),JVM 無法分配。
| 物理內存 | 建議 -Xmx | 說明 |
|---|---|---|
| 2 GB | 512m - 768m | 留 1GB+ 給系統 |
| 4 GB | 1024m - 1536m | 平衡建構速度與系統穩定 |
| 8 GB+ | 2048m - 3072m | 大型專案多模組並行建構 |
# 2GB 內存機器推薦
org.gradle.jvmargs=-Xmx768m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# 移除 MaxPermSize (Java 8+ 已移除 PermGen,改用 Metaspace)
./gradlew --no-daemon assembleDebug # 禁用 Daemon,每次構建新 JVM(較慢但穩定)
./gradlew -Dorg.gradle.jvmargs="-Xmx512m" assembleDebug
# 1. 清理 Daemon
./gradlew --stop
# 2. 重新同步
./gradlew --refresh-dependencies
# 3. 觀察內存佔用 (可視化工具)
jvisualvm / jconsole / jcmd VM.native_memory summary