Eclipse 啟動參數配置不當是導致 IDE 卡頓、OOM 崩潰、無法啟動的高頻原因。本文徹底解析 eclipse.ini 中 JVM 參數含義、堆/非堆內存模型、不同機器啟動差異根因,並給出標準寫法與驗證方法。
-vmargs
-Xms128m
-Xmx512m
-XX:PermSize=64m
-XX:MaxPermSize=128m
註:JDK 8+ 已移除 PermGen,改用 Metaspace,參數為 -XX:MetaspaceSize / -XX:MaxMetaspaceSize。
| 區域 | 參數 | 預設值 | 說明 |
|---|---|---|---|
| 堆 | -Xms | 物理內存 1/64 | 初始堆大小 |
| -Xmx | 物理內存 1/4 | 最大堆大小 | |
| 非堆 | -XX:PermSize / MetaspaceSize | 物理內存 1/64 | 初始非堆大小 (類元數據、常量池、JIT 代碼) |
| -XX:MaxPermSize / MaxMetaspaceSize | 物理內存 1/4 | 最大非堆大小 |
-Xms = -Xmx 固定堆,避免 GC 後抖動
# ❌ 參數與值同行且未轉義
-vmargs -Xms128m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m
# ✅ 標準格式
-vmargs
-Xms128m
-Xmx512m
-XX:PermSize=64m
-XX:MaxPermSize=128m
# ✅ 指定 JDK (路徑含空格)
-vm
"C:\Program Files\Java\jdk1.8.0_202\bin\javaw.exe"
-vmargs
-Xms256m
-Xmx1024m
-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=256m
-Xmx、MetaspaceSize 等參數確認
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Xms40m
-Xmx256m
--launcher.XXMaxPermSize:Eclipse 啟動器 (C 代碼) 設置的非堆上限,**僅對啟動器進程生效**-XX:MaxPermSize:JVM 參數,**對運行 Eclipse 的 JVM 生效**
# 並行 GC,利用多核縮短 GC 停頓 (JDK 5+)
-XX:+UseParallelGC
-XX:ParallelGCThreads=4 # 明確指定 GC 線程數,通常 = CPU 核心數
JDK 9+ G1 預設即並行,無需額外配置。
-vm
/path/to/jdk-21/bin/java
-vmargs
--add-modules=ALL-SYSTEM
-Dosgi.requiredJavaVersion=17
-Dosgi.instance.area.default=@user.home/eclipse-workspace
-Xms256m
-Xmx2g
-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=512m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=100
-XX:+UseStringDeduplication
-Dfile.encoding=UTF-8
eclipse.ini 核心在於:理解堆/非堆模型、遵守「一行一參數」語法、根據 JDK 版本選擇 PermGen/Metaspace 參數、固定堆大小避免抖動、用 Configuration Details 驗證生效。現代大內存機器配合 JDK 17+ G1 GC,給予 2-4GB 堆通常能獲得流暢體驗。