java命令行參數解析


 Java在運行已編譯完成的類時,是通過java虛擬機來裝載和執行的,java虛擬機通過操作系統命令JAVA_HOME”bin”java –option 來啟動,-option為虛擬機參數,JAVA_HOME為JDK安裝路徑,通過這些參數可對虛擬機的運行狀態進行調整,明白參數的含義可對虛擬機的運行模式有更深入的理解。

查看參數列表:

虛擬機參數分為基本和擴展兩類,在命令行中輸入JAVA_HOME”bin”java 就可得到基本參數列表,在命令行輸入JAVA_HOME”bin”java –X 就可得到擴展參數列表。

基本參數說明:

-client,-server

  這兩個參數用於設置虛擬機使用何種運行模式,client模式啟動比較快,但運行時性能和內存管理效率不如server模式,通常用於客戶端應用程序。相反,server模式啟動比client慢,但可獲得更高的運行性能。
  在 windows上,缺省的虛擬機類型為client模式,如果要使用 server模式,就需要在啟動虛擬機時加-server參數,以獲得更高性能,對服務器端應用,推薦采用server模式,尤其是多個CPU的系統。在 Linux上缺省采用server模式。

-hotspot

  含義與client相同,JDK1.4以前使用的參數,JDK1.4開始不再使用,以client。取代

-classpath,-cp

 虛擬機在運行一個類時,需要將其裝入內存,虛擬機搜索類的方式和順序如下:
 Bootstrap classes,Extension classes,User classes。
  Bootstrap 中的路徑是虛擬機自帶的jar或zip文件,虛擬機首先搜索這些包文件,用System.getProperty(“sun.boot.class.path”)可得到虛擬機搜索的包名。
  Extension是位於jre”lib”ext目錄下的jar文件,虛擬機在搜索完Bootstrap后就搜索該目錄下的jar文件。用System. getProperty(“java.ext.dirs”)可得到虛擬機使用Extension搜索路徑。
  User classes搜索順序為當前目錄、環境變量 CLASSPATH、-classpath。

-classpath

  告知虛擬機搜索目錄名、jar文檔名、zip文檔名,之間用分號;分隔。
  例如當你自己開發了公共類並包裝成一個common.jar包,在使用 common.jar中的類時,就需要用-classpath common.jar 告訴虛擬機從common.jar中查找該類,否則虛擬機就會拋出NoClassDefFoundError異常,表明未找到類定義。
  在運行時可用System.getProperty(“java.class.path”)得到虛擬機查找類的路徑。

  使用-classpath后虛擬機將不再使用CLASSPATH中的類搜索路徑,如果-classpath和CLASSPATH都沒有設置,則虛擬機使用當前路徑(.)作為類搜索路徑。
  推薦使用-classpath來定義虛擬機要搜索的類路徑,而不要使用環境變量 CLASSPATH的搜索路徑,以減少多個項目同時使用CLASSPATH時存在的潛在沖突。例如應用1要使用a1.0.jar中的類G,應用2要使用 a2.0.jar中的類G,a2.0.jar是a1.0.jar的升級包,當a1.0.jar,a2.0.jar都在CLASSPATH中,虛擬機搜索到第一個包中的類G時就停止搜索,如果應用1應用2的虛擬機都從CLASSPATH中搜索,就會有一個應用得不到正確版本的類G。

-DpropertyName=value

  在虛擬機的系統屬性中設置屬性名/值對,運行在此虛擬機之上的應用程序可用System.getProperty(“propertyName”)得到value的值。
  如果value中有空格,則需要用雙引號將該值括起來,如-Dname=”space string”。
  該參數通常用於設置系統級全局變量值,如配置文件的路徑,應為該屬性在程序中任何地方都可訪問。

-verbose[:class|gc|jni]

在輸出設備上顯示虛擬機運行信息。
verbose和verbose:class含義相同,輸出虛擬機裝入(載入)的類的信息,顯示的信息格式如下:
[Loaded java.io.FilePermission$1 from shared objects file]
當虛擬機報告類找不到或類沖突時可用此參數來診斷來查看虛擬機從裝入類的情況。

-verbose:gc

在虛擬機發生內存回收時在輸出設備顯示信息,格式如下:
[Full GC 268K->168K(1984K), 0.0187390 secs]
該參數用來監視虛擬機內存回收的情況。

-verbose:jni

在虛擬機調用native方法時輸出設備顯示信息,格式如下:
[Dynamic-linking native method HelloNative.sum … JNI]
該參數用來監視虛擬機調用本地方法的情況,在發生jni錯誤時可為診斷提供便利。

-version

顯示可運行的虛擬機版本信息然后退出。一台機器上裝有不同版本的JDK時

-showversion

顯示版本信息以及幫助信息。 內容來自dedecms

-ea[:<packagename>…|:<classname>] / -enableassertions

從JDK1.4開始,java支持斷言機制,用於診斷運行時問題。通常在測試階段使斷言有效,在正式運行時不需要運行斷言。斷言后的表達式的值是一個邏輯值,為true時斷言不運行,為false時斷言運行,並且拋出java.lang.AssertionError異常。
上述參數用來設置虛擬機是否啟動斷言機制,缺省時虛擬機關閉斷言機制,用-ea 可打開斷言機制,不加 和classname時運行所有包和類中的斷言,如果希望只運行某些包或類中的斷言,可將包名或類名加到-ea之后。例如要啟動包com.foo.util中的斷言,可用命令 –ea:com.foo.util .

-da[:<packagename>…|:<classname>] / -disableassertions

用來設置虛擬機關閉斷言處理機制,packagename和classname的使用方法和-ea相同。

-esa | -enablesystemassertions

設置虛擬機顯示系統類的斷言。

-dsa | -disablesystemassertions

設置虛擬機關閉系統類的斷言。 dedecms.com

-agentlib:<libname>[=<options>]

該參數是從JDK5開始引入的,用於虛擬機裝載本地代理庫。
Libname 為本地代理庫文件名,虛擬機的搜索路徑為環境變量PATH中的路徑,options為傳給本地庫啟動時的參數,多個參數之間用逗號分隔。在Windows 平台上虛擬機搜索本地庫名為libname.dll的文件,在Unix上虛擬機搜索本地庫名為libname.so的文件,搜索路徑環境變量在不同系統上有所不同,Linux、SunOS、IRIX上為LD_LIBRARY_PATH,AIX上為LIBPATH,HP-UX上為SHLIB_PATH。
例如可使用-agentlib:hprof來獲取虛擬機的運行情況,包括CPU、內存、線程等的運行數據,並可輸出到指定文件中,可用-agentlib:hprof=help來得到使用幫助列表。在jre”bin目錄下可發現hprof.dll文件。

-agentpath:<pathname>[=<options>]

設置虛擬機安全路徑裝載本地庫,不再搜索PATH中的路徑。其他功能和agentlib相同。

-javaagent:<jarpath>[=<options>]

虛擬機啟動時裝入java語言設備代理。Jarpath文件中的mainfest 文件必須有Agent-Class屬性。代理類要實現public static void premain(String agentArgs, Instrumentation inst)方法。當虛擬機初始化時,將按代理類的說明順序調用premain方法。
參見:java.lang.instrument

擴展參數說明

-Xmixed

設置-client模式虛擬機對使用頻率高的方式進行Just-In-Time編譯和執行,對其他方法使用解釋方式執行。該方式是虛擬機缺省模式。

-Xint

設置-client模式下運行的虛擬機以解釋方式執行類的字節碼,不將字節碼編譯為本機碼。

-Xbootclasspath:path

-Xbootclasspath/a:path

-Xbootclasspath/p:path

改變虛擬機裝載缺省系統運行包rt.jar而從-Xbootclasspath中設定的搜索路徑中裝載系統運行類。除非你自己能寫一個運行時,否則不會用到該參數。
/a:將在缺省搜索路徑后加上path 中的搜索路徑。
/p:在缺省搜索路徑前先搜索path中的搜索路徑。

-Xnoclassgc

關閉虛擬機對class的垃圾回收功能。

-Xincgc

啟動增量垃圾收集器,缺省是關閉的。增量垃圾收集器能減少偶然發生的長時間的垃圾回收造成的暫停時間。但增量垃圾收集器和應用程序並發執行,因此會占用部分CPU在應用程序上的功能。

-Xloggc:<file>

將虛擬機每次垃圾回收的信息寫到日志文件中,文件名由file指定,文件格式是平文件,內容和-verbose:gc輸出內容相同。

-Xbatch

虛擬機的缺省運行方式是在后台編譯類代碼,然后在前台執行代碼,使用-Xbatch參數將關閉虛擬機后台編譯,在前台編譯完成后再執行。

-Xms<size>

設置虛擬機可用內存堆的初始大小,缺省單位為字節,該大小為1024的整數倍並且要大於1MB,可用k(K)或m(M)為單位來設置較大的內存數。初始堆大小為2MB。
例如:-Xms6400K,-Xms256M

-Xmx<size>

設置虛擬機內存堆的最大可用大小,缺省單位為字節。該值必須為1024整數倍,並且要大於2MB。可用k(K)或m(M)為單位來設置較大的內存數。缺省堆最大值為64MB。
例如:-Xmx81920K,-Xmx80M
當應用程序申請了大內存運行時虛擬機拋出java.lang.OutOfMemoryError: Java heap space錯誤,就需要使用-Xmx設媒洗蟮目捎媚詿娑選?BR>

-Xss<size>

設置線程棧的大小,缺省單位為字節。與-Xmx類似,也可用K或M來設置較大的值。通常操作系統分配給線程棧的缺省大小為1MB。
另外也可在java中創建線程對象時設置棧的大小,構造函數原型為Thread(ThreadGroup group, Runnable target, String name, long stackSize)。

-Xprof

輸出CPU運行時的診斷信息。

-Xfuture

對類文件進行嚴格格式檢查,以保證類代碼符合類代碼規范。為保持向后兼容,虛擬機缺省不進行嚴格的格式檢查。

-Xrs

減少虛擬機中操作系統的信號(singals)的使用。該參數通常用在虛擬機以后台服務方式運行時使用(如Servlet)。

-Xcheck:jni


D:\j2sdk15\bin>java -X
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
-Xbootclasspath:<directories and zip/jar files separated by ;>
set search path for bootstrap classes and resources
-Xbootclasspath/a:<directories and zip/jar files separated by ;>
append to end of bootstrap class path
-Xbootclasspath/p:<directories and zip/jar files separated by ;>
prepend in front of bootstrap class path
-Xnoclassgc disable class garbage collection
-Xincgc enable incremental garbage collection
-Xloggc:<file> log GC status to a file with time stamps
-Xbatch disable background compilation
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
-Xss<size> set java thread stack size
-Xprof output cpu profiling data
-Xfuture enable strictest checks, anticipating future default
-Xrs reduce use of OS signals by Java/VM (see documentation)
-Xcheck:jni perform. additional checks for JNI functions
-Xshare:off do not attempt to use shared class data
-Xshare:auto use shared class data if possible (default)
-Xshare:on require using shared class data, otherwise fail.

The -X options are non-standard and subject to change without notice.

JVM配置參數中文說明:

1、-Xmixed mixed mode execution (default)
混合模式執行

2、-Xint interpreted mode execution only
解釋模式執行

3、-Xbootclasspath:<directories and zip/jar files separated by ;>
set search path for bootstrap classes and resources
設置zip/jar資源或者類(.class文件)存放目錄路徑

3、-Xbootclasspath/a:<directories and zip/jar files separated by ;>
append to end of bootstrap class path
追加zip/jar資源或者類(.class文件)存放目錄路徑

4、-Xbootclasspath/p:<directories and zip/jar files separated by ;>
prepend in front of bootstrap class path
預先加載zip/jar資源或者類(.class文件)存放目錄路徑

5、-Xnoclassgc disable class garbage collection
關閉類垃圾回收功能

6、-Xincgc enable incremental garbage collection
開啟類的垃圾回收功能

7、-Xloggc:<file> log GC status to a file with time stamps
記錄垃圾回日志到一個文件。

8、-Xbatch disable background compilation
關閉后台編譯

9、-Xms<size> set initial Java heap size
設置JVM初始化堆內存大小

10、-Xmx<size> set maximum Java heap size
設置JVM最大的堆內存大小

11、-Xss<size> set java thread stack size
設置JVM棧內存大小

12、-Xprof output cpu profiling data
輸入CPU概要表數據

13、-Xfuture enable strictest checks, anticipating future default
執行嚴格的代碼檢查,預測可能出現的情況

14、-Xrs reduce use of OS signals by Java/VM (see documentation)
通過JVM還原操作系統信號

15、-Xcheck:jni perform. additional checks for JNI functions
對JNI函數執行檢查

16、-Xshare:off do not attempt to use shared class data
盡可能不去使用共享類的數據

17、-Xshare:auto use shared class data if possible (default)
盡可能的使用共享類的數據

18、-Xshare:on require using shared class data, otherwise fail.
盡可能的使用共享類的數據,否則運行失敗

The -X options are non-standard and subject to change without notice.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM