除錯、效能調優、環境檢查時,常需查看 JVM 啟動參數、系統屬性(-Dkey=value)、環境變數等。本文提供三種不同詳細度的實作供選擇。
package systeminfo;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Properties;
public class SysInfo {
public static void main(String[] args) {
Properties props = System.getProperties();
Iterator> it = props.entrySet().iterator();
while (it.hasNext()) {
Entry
優點:可自訂輸出格式、過濾敏感鍵值、寫入日誌檔。
package systeminfo;
public class SysInfoSimple {
public static void main(String[] args) {
System.out.println(System.getProperties());
}
}
輸出為單行 {key1=value1, key2=value2, ...},適合終端機快速掃視。
package systeminfo;
public class SysInfoSplit {
public static void main(String[] args) {
String all = System.getProperties().toString(); // {k1=v1, k2=v2}
String[] pairs = all.substring(1, all.length()-1).split(", ");
for (String p : pairs) System.out.println(p);
}
}
將 Properties.toString() 產生的字串去除大括號後以 , 分割,每行顯示一組。
| 屬性鍵 | 含義 |
|---|---|
| java.version | JRE 版本 |
| java.home | JRE 安裝目錄 |
| os.name / os.arch | 作業系統名稱 / 架構 |
| user.dir | 程式工作目錄 |
| file.encoding | 預設檔案編碼 |
| sun.java.command | 完整啟動指令(含 main 類與參數) |
import com.sun.management.OperatingSystemMXBean;
import java.lang.management.ManagementFactory;
OperatingSystemMXBean osBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
// osBean.getVmArgs() 需 JDK 9+ 且啟用 -XX:+UnlockDiagnosticVMOptions
三種寫法各有適用場景,建議專案內建一個 SysInfo 工具類,上線前可快速驗證部署環境參數是否符合預期。