即使在現代整合開發環境(IDE)普及的今天,java 命令依然是 Java 開發者必須掌握的核心技能,也是 SCJP(現 OCP)認證考試的重點內容。熟練掌握命令列參數,不僅有助於理解程式執行機制,更是進行 JVM 效能調優、排查線上問題的基礎。
執行 java -help 可獲得標準用法概覽:
Usage: java [-options] class [args...]
java [-options] -jar jarfile [args...]
核心參數分類如下:
System.getProperty() 讀取。-agentlib:hprof、-agentlib:jdwp=help)。java.lang.instrument)。執行 java -X 可查看非標準選項,這些參數常用於記憶體管理、GC 行為控制與效能分析:
-Xms512m)。-Xmx2g)。建議生產環境設定相同值避免震盪。預設搜尋當前目錄下的類別檔案,需包含 public static void main(String[]) 的主類別。
專案結構:
myproject/
├── com/
│ └── lavasoft/
│ └── TestMainVar.class
執行命令:
C:\myproject> java -cp . com.lavasoft.TestMainVar arg1 arg2
關鍵點:-cp . 指定根目錄,主類別使用完整包名。
程式碼範例:
package com.lavasoft;
import java.util.Properties;
public class TestProperty {
public static void main(String[] args) {
Properties prop = System.getProperties();
prop.list(System.out);
}
}
執行:
java -DmyProp=999999999 -cp . com.lavasoft.TestProperty
注意:-D 參數中間不可有空格。程式即可透過 System.getProperty("myProp") 取得值。
測試類別:
package com.lavasoft;
public class TestMainVar {
public static void main(String[] args) {
System.out.println("入參列表如下:");
for (String arg : args) {
System.out.println(arg);
}
}
}
執行:
java -cp . com.lavasoft.TestMainVar hello world "param with space"
輸出將逐行列印三個參數。
java -verbose:class -cp . com.lavasoft.TestMainVar:觀察類別載入順序。java -verbose:gc -Xloggc:gc.log -cp . com.lavasoft.TestMainVar:記錄 GC 過程至檔案供事後分析。-Xms 與 -Xmx 設定相同,減少 Full GC 觸發機率。-Xloggc:<path> -XX:+PrintGCDetails -XX:+PrintGCDateStamps(JDK 8+),配合 GCViewer、GCEasy 等工具分析。-server。-verbose:class,排查 JNI 問題用 -Xcheck:jni。java 命令參數看似繁多,但核心常用者僅十餘個。掌握類別路徑、記憶體模型、GC 日誌、系統屬性注入這四大塊,即可應對 90% 的開發與運維場景。建議開發者動手實驗各參數組合,建立肌肉記憶,關鍵時刻才能游刃有餘。