java 是 JVM 啟動器,負責載入類別、初始化執行環境、呼叫 main 方法啟動應用程式。掌握啟動參數對部署、調優、除錯至關重要。
java [選項] 類別全名 [引數...]
# 或
java [選項] -jar 檔案.jar [引數...]
com.example.Main),不含 .class 副檔名。public static void main(String[] args)。| 類別 | 選項 | 功能說明 |
|---|---|---|
| 類別路徑 | -classpath / -cp | 覆寫 CLASSPATH 環境變數,指定類別/資源搜尋路徑 |
-D 屬性=值 | 設定系統屬性,程式可用 System.getProperty() 讀取 | |
--module-path / -p | 模組路徑(JDK 9+ 模組系統) | |
| 記憶體管理 | -Xms <大小> | 堆積初始/最小值(如 512m, 2g) |
-Xmx <大小> | 堆積最大值(生產環境建議 Xms=Xmx) | |
-Xss <大小> | 執行緒堆疊大小(預設 1M,遞迴深度大時調大) | |
-XX:MetaspaceSize / MaxMetaspaceSize | 元空間大小控制(JDK 8+ 取代 PermGen) | |
-XX:+UseG1GC / ZGC / Shenandoah | 選擇 GC 演算法(JDK 11+ 建議 G1/ZGC) | |
| 除錯與診斷 | -agentlib:jdwp=... | 啟用 JPDA 遠端除錯 |
-verbose:class/gc/jni | 輸出類別載入/GC/JNI 詳細資訊 | |
-XX:+PrintGCDetails -Xlog:gc* | 詳細 GC 日誌(JDK 9+ 用 -Xlog) | |
-XX:+HeapDumpOnOutOfMemoryError | OOM 時自動產生 heap dump | |
| 驗證與安全 | -verify / -noverify | 啟用/停用位元碼驗證 |
-verifyremote | 僅驗證遠端載入的類別 | |
-Djava.security.manager | 啟用安全管理員(舊版) | |
-Djava.security.policy | 指定安全政策檔 |
# 生產環境典型設定(8G 記憶體機器)
java -Xms4g -Xmx4g -Xss1m \
-XX:+UseG1GC -XX:MaxGCPauseMillis=200 \
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/heap.hprof \
-Dfile.encoding=UTF-8 -Duser.timezone=Asia/Taipei \
-cp app.jar com.example.Application
-cp 包含類別輸出目錄、主類別名稱正確(含套件)。-Xmx、檢查記憶體洩漏、啟用 heap dump 分析。-XX:MaxGCPauseMillis、檢查大物件分配。-verbose:class 追蹤載入來源、使用 mvn dependency:tree 排查。java --module-path mods -m com.example/com.example.Main
模組化應用需在 module-info.java 宣告 requires/exports。