首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

執行 Java Class 文件與 JVM 參數詳解

     編輯:Java 相關知識

Java 應用啟動命令、Classpath、JVM 內存與診斷參數完全指南

掌握 java 命令的各種用法,對於部署、調優、排查生產故障至關重要。

1. 基本執行方式

# 執行當前目錄下的類(無包)
java HelloWorld

# 執行帶包的類(需在包根目錄下執行)
java com.example.HelloWorld

# 指定 classpath 執行
java -cp .:lib/* com.example.HelloWorld  # Linux/Mac
java -cp .;lib/* com.example.HelloWorld  # Windows

# 執行可執行 JAR(Manifest 指定 Main-Class)
java -jar app.jar

# 執行 JAR 中的指定類
java -cp app.jar com.example.HelloWorld

2. 內存設置參數(核心調優)

參數含義示例
-Xms堆初始大小-Xms512m
-Xmx堆最大大小-Xmx2g
-Xmn新生代大小-Xmn512m
-Xss線程棧大小-Xss256k
-XX:MetaspaceSize元空間初始大小 (JDK 8+)-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize元空間最大大小-XX:MaxMetaspaceSize=512m

最佳實踐:生產環境建議 -Xms -Xmx 設置相同值,避免堆動態擴縮容引起停頓。

3. GC 相關參數

# 選擇收集器
-XX:+UseG1GC           # G1 (JDK 9+ 默認)
-XX:+UseZGC            # ZGC (JDK 11+ 低延遲)
-XX:+UseParallelGC     # 吞吐量優先

# GC 日誌 (JDK 9+ 統一日誌格式)
-Xlog:gc*:file=/var/log/gc.log:time,uptime,level,tags:filecount=5,filesize=100m

# 舊版 (JDK 8)
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log/gc.log

4. 診斷與調試參數

  • -version / -showversion:查看版本信息。
  • -Xint:僅解釋執行(關閉 JIT),極慢,用於調試。
  • -Xcomp:首次使用即編譯。
  • -Xmixed:混合模式(默認)。
  • -Xcheck:jni:檢查 JNI 調用。
  • -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dumps:OOM 時導出堆快照。
  • -XX:+PrintCommandLineFlags:打印啟動時生效的所有 XX 參數值。

5. 類加載與模塊系統 (JDK 9+)


# 打印類加載
-XX:+TraceClassLoading
# 模塊路徑
--module-path libs --module myapp
# 添加模塊讀取邊界
--add-modules java.xml.bind
# 開放封裝 (反射訪問內部 API)
--add-opens java.base/java.lang=ALL-UNNAMED

6. Tomcat / 容器化環境配置

在 catalina.sh / setenv.sh 中設置 JAVA_OPTS 或 CATALINA_OPTS:

CATALINA_OPTS="-Xms2g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xlog:gc*:/logs/gc.log"

7. 常見啟動錯誤排查

  • Error: Could not find or load main class:類名錯誤、包路徑錯誤、classpath 未包含編譯輸出目錄。
  • NoClassDefFoundError:運行時缺少依賴 JAR,檢查 -cp 或 Manifest Class-Path。
  • OutOfMemoryError: Java heap space:增大 -Xmx 或排查內存洩漏。
  • OutOfMemoryError: Metaspace:增大 MaxMetaspaceSize 或排查類加載洩漏。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved