Java命令行运行参数说明大全--转
?來源:http://xinklabi.iteye.com/blog/837435
Java在運行已編譯完成的類時,是通過java虛擬機來裝載和執行的,java虛擬機通過操作系統命令JAVA_HOME\bin\java –option 來啟動,-option為虛擬機參數,JAVA_HOME為JDK安裝路徑,通過這些參數可對虛擬機的運行狀態進行調整,掌握參數的含義可對虛擬機的運行模式有更深入理解。
一、???????? 查看參數列表:
虛擬機參數分為基本和擴展兩類,在命令行中輸入JAVA_HOME\bin\java 就可得到基本參數列表,在命令行輸入JAVA_HOME\bin\java –X 就可得到擴展參數列表。
二、???????? 基本參數說明:
1.???? -client,-server
這兩個參數用于設置虛擬機使用何種運行模式,client模式啟動比較快,但運行時性能和內存管理效率不如server模式,通常用于客戶端應用程序。相反,server模式啟動比client慢,但可獲得更高的運行性能。
在 windows上,缺省的虛擬機類型為client模式,如果要使用 server模式,就需要在啟動虛擬機時加-server參數,以獲得更高性能,對服務器端應用,推薦采用server模式,尤其是多個CPU的系統。在 Linux,Solaris上缺省采用server模式。?
2.???? -hotspot
含義與client相同,jdk1.4以前使用的參數,jdk1.4開始不再使用,代之以client。
3.???? -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。
4.???? -classpath
告知虛擬機搜索目錄名、jar文檔名、zip文檔名,之間用分號;分隔。
例如當你自己開發了公共類并包裝成一個common.jar包,在使用 common.jar中的類時,就需要用-classpath common.jar 告訴虛擬機從common.jar中查找該類,否則虛擬機就會拋出java.lang.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。
5.???? -D<propertyName>=value
在虛擬機的系統屬性中設置屬性名/值對,運行在此虛擬機之上的應用程序可用System.getProperty(“propertyName”)得到value的值。
如果value中有空格,則需要用雙引號將該值括起來,如-Dname=”space string”。
該參數通常用于設置系統級全局變量值,如配置文件路徑,應為該屬性在程序中任何地方都可訪問。
在輸出設備上顯示虛擬機運行信息。
verbose和verbose:class含義相同,輸出虛擬機裝入的類的信息,顯示的信息格式如下:
[Loaded java.io.FilePermission$1 from shared objects file]
當虛擬機報告類找不到或類沖突時可用此參數來診斷來查看虛擬機從裝入類的情況。
7.???? -verbose:gc
在虛擬機發生內存回收時在輸出設備顯示信息,格式如下:
[Full GC 268K->168K(1984K), 0.0187390 secs]
該參數用來監視虛擬機內存回收的情況。
8.???? -verbose:jni
在虛擬機調用native方法時輸出設備顯示信息,格式如下:
[Dynamic-linking native method HelloNative.sum ... JNI]
該參數用來監視虛擬機調用本地方法的情況,在發生jni錯誤時可為診斷提供便利。
9.???? -version
顯示可運行的虛擬機版本信息然后退出。一臺機器上裝有不同版本的JDK時
10.-showversion
顯示版本信息以及幫助信息。?內容來自dedecms?
11.-ea[:<packagename>...|:<classname>]
12.-enableassertions[:<packagename>...|:<classname>]
從JDK1.4開始,java可支持斷言機制,用于診斷運行時問題。通常在測試階段使斷言有效,在正式運行時不需要運行斷言。斷言后的表達式的值是一個邏輯值,為true時斷言不運行,為false時斷言運行,拋出java.lang.AssertionError錯誤。
上述參數就用來設置虛擬機是否啟動斷言機制,缺省時虛擬機關閉斷言機制,用-ea 可打開斷言機制,不加<packagename>和classname時運行所有包和類中的斷言,如果希望只運行某些包或類中的斷言,可將包名或類名加到-ea之后。例如要啟動包com.foo.util中的斷言,可用命令 –ea:com.foo.util 。
13.-da[:<packagename>...|:<classname>]
14.-disableassertions[:<packagename>...|:<classname>]
用來設置虛擬機關閉斷言處理,packagename和classname的使用方法和-ea相同。
15.-esa | -enablesystemassertions
設置虛擬機顯示系統類的斷言。
16.-dsa | -disablesystemassertions
設置虛擬機關閉系統類的斷言。?dedecms.com?
17.-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文件。
18. -agentpath:<pathname>[=<options>]
設置虛擬機按全路徑裝載本地庫,不再搜索PATH中的路徑。其他功能和agentlib相同。
19.-javaagent:<jarpath>[=<options>]
虛擬機啟動時裝入java語言設備代理。Jarpath文件中的mainfest 文件必須有Agent-Class屬性。代理類要實現public static void premain(String agentArgs, Instrumentation inst)方法。當虛擬機初始化時,將按代理類的說明順序調用premain方法。?copyright dedecms?
參見:java.lang.instrument
三、???????? 擴展參數說明
1.???? -Xmixed
設置-client模式虛擬機對使用頻率高的方式進行Just-In-Time編譯和執行,對其他方法使用解釋方式執行。該方式是虛擬機缺省模式。
2.???? -Xint
設置-client模式下運行的虛擬機以解釋方式執行類的字節碼,不將字節碼編譯為本機碼。
3.???? -Xbootclasspath:path
4.???? -Xbootclasspath/a:path
5.???? -Xbootclasspath/p:path
改變虛擬機裝載缺省系統運行包rt.jar而從-Xbootclasspath中設定的搜索路徑中裝載系統運行類。除非你自己能寫一個運行時,否則不會用到該參數。
/a:將在缺省搜索路徑后加上path 中的搜索路徑。
/p:在缺省搜索路徑前先搜索path中的搜索路徑。
6.???? -Xnoclassgc
關閉虛擬機對class的垃圾回收功能。
7.???? -Xincgc
啟動增量垃圾收集器,缺省是關閉的。增量垃圾收集器能減少偶然發生的長時間的垃圾回收造成的暫停時間。但增量垃圾收集器和應用程序并發執行,因此會占用部分CPU在應用程序上的功能。?
8.???? -Xloggc:<file>
將虛擬機每次垃圾回收的信息寫到日志文件中,文件名由file指定,文件格式是平文件,內容和-verbose:gc輸出內容相同。
9.???? -Xbatch
虛擬機的缺省運行方式是在后臺編譯類代碼,然后在前臺執行代碼,使用-Xbatch參數將關閉虛擬機后臺編譯,在前臺編譯完成后再執行。
10.-Xms<size>
設置虛擬機可用內存堆的初始大小,缺省單位為字節,該大小為1024的整數倍并且要大于1MB,可用k(K)或m(M)為單位來設置較大的內存數。初始堆大小為2MB。
例如:-Xms6400K,-Xms256M
11.-Xmx<size>
設置虛擬機內存堆的最大可用大小,缺省單位為字節。該值必須為1024整數倍,并且要大于2MB。可用k(K)或m(M)為單位來設置較大的內存數。缺省堆最大值為64MB。
例如:-Xmx81920K,-Xmx80M
當應用程序申請了大內存運行時虛擬機拋出java.lang.OutOfMemoryError: Java heap space錯誤,就需要使用-Xmx設媒洗蟮目捎媚詿娑選?BR>
12.-Xss<size>
設置線程棧的大小,缺省單位為字節。與-Xmx類似,也可用K或M來設置較大的值。通常操作系統分配給線程棧的缺省大小為1MB。?
另外也可在java中創建線程對象時設置棧的大小,構造函數原型為Thread(ThreadGroup group, Runnable target, String name, long stackSize)。
13.-Xprof
輸出CPU運行時的診斷信息。
14.-Xfuture
對類文件進行嚴格格式檢查,以保證類代碼符合類代碼規范。為保持向后兼容,虛擬機缺省不進行嚴格的格式檢查。
15.-Xrs
減少虛擬機中操作系統的信號(singals)的使用。該參數通常用在虛擬機以后臺服務方式運行時使用(如Servlet)。
16.-Xcheck:jni 一、運行class文件?
執行帶main方法的class文件,命令行為:
java?<CLASS文件名>
注意:CLASS文件名不要帶文件后綴.class
例如:
java?Test
如果執行的class文件是帶包的,即在類文件中使用了:
package?<包名>
那應該在包的基路徑下執行,命令行為:
java?<包名>.CLASS文件名
例如:
PackageTest.java中,其包名為:com.ee2ee.test,對應的語句為:
package?com.ee2ee.test;
PackageTest.java及編譯后的class文件PackageTest.class的存放目錄如下:
classes
??|__com
??????|__ee2ee
???????????|__test
????????????????|__PackageTest.java
????????????????|__PackageTest.class
要運行PackageTest.class,應在classes目錄下執行:
java?com.ee2ee.test.PackageTest?
二、運行jar文件中的class?
原理和運行class文件一樣,只需加上參數-cp?<jar文件名>即可。
例如:執行test.jar中的類com.ee2ee.test.PackageTest,命令行如下:
java?-cp?test.jar?com.ee2ee.test.PackageTest?
三、顯示jdk版本信息?
當一臺機器上有多個jdk版本時,需要知道當前使用的是那個版本的jdk,使用參數-version即可知道其版本,命令行為:
java?-version?
四、增加虛擬機可以使用的最大內存?
java虛擬機可使用的最大內存是有限制的,缺省值通常為64MB或128MB。
如果一個應用程序為了提高性能而把數據加載內存中而占用較大的內存,比如超過了默認的最大值128MB,需要加大java虛擬機可使用的最大內存,否則會出現Out?of?Memory(系統內存不足)的異常。啟動java時,需要使用如下兩個參數:
-Xms?java虛擬機初始化時使用的內存大小
-Xmx?java虛擬機可以使用的最大內存
以上兩個參數中設置的size,可以帶單位,例如:256m表示256MB
舉例說明:
java?-Xms128m?-Xmx256m?...
表示java虛擬機初始化時使用的內存為128MB,可使用的最大內存為256MB。
對于tomcat,可以修改其腳本catalina.sh(unix平臺)或catalina.bat(windows平臺),設置變量JAVA_OPTS即可,例如:
JAVA_OPTS='-Xms128m?-Xmx256m'? 在控制臺輸出信息中,有個-X(注意是大寫)的命令,這個正是查看JVM配置參數的命令。 其次,用java -X 命令查看JVM的配置說明: 運行后如下結果,這些就是配置JVM參數的秘密武器,這些信息都是英文的,為了方便閱讀,我根據自己的理解翻譯成中文了(不準確的地方還請各位博友斧正) ----------------------------------------------------------------------- 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. ----------------------------------------------------------------------- 怎么用這這些參數呢?其實所有的命令行都是這么一用,下面我就給出一個最簡單的HelloWorl的例子來演示這個參數的用法,非常的簡單。 HelloWorld.java ----------------------------------------------- public class? HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 編譯并運行: D:\j2sdk15\bin>javac HelloWorld.java D:\j2sdk15\bin>java -Xms256M -Xmx512M HelloWorld Hello World! 呵呵,這下滿足了吧! 實踐:在大型系統或者應用中配置JVM參數 比如你配置IDE工具的參數,常見的有IDEA、Eclipse,這個是在一個配置文件中指定即可。 如果你要在J2EE環境中配置這些參數,那么你需要在J2EE應用服務器或者Servlet容器相關啟動參數設置處指定,其啟動文件中來配置,Tomcat是在catalina.bat中配置,weblogic和websphere是在其他地方,具體我就說了,相信玩過的這些大型服務器的人都知道,沒玩過的看看這篇文章,玩玩就知道了,呵呵。 另外常常有人問到jdk的一些相關命令用法,其實,當你看到這里的時候,你應該知道如何獲取這些命令的用法了。如果你還不會,那么,建議你去學學DOS,我是沒轍了。如果你會這些,還是沒有看明白,那么你趕緊學學英語吧,這樣你就能看懂了。 附錄1 基本參數 Microsoft Windows [版本 6.1.7601] 版權所有 (c) 2009 Microsoft Corporation。保留所有權利。C:\Users\wangwei1>java -h Usage: java [-options] class [args...](to execute a class)or java [-options] -jar jarfile [args...](to execute a jar file)where options include:-server to select the "server" VM-hotspot is a synonym for the "server" VM [deprecated]The default VM is server.-cp <class search path of directories and zip/jar files>-classpath <class search path of directories and zip/jar files>A ; separated list of directories, JAR archives,and ZIP archives to search for class files.-D<name>=<value>set a system property-verbose[:class|gc|jni]enable verbose output-version print product version and exit-version:<value>require the specified version to run-showversion print product version and continue-jre-restrict-search | -jre-no-restrict-searchinclude/exclude user private JREs in the version search-? -help print this help message-X print help on non-standard options-ea[:<packagename>...|:<classname>]-enableassertions[:<packagename>...|:<classname>]enable assertions-da[:<packagename>...|:<classname>]-disableassertions[:<packagename>...|:<classname>]disable assertions-esa | -enablesystemassertionsenable system assertions-dsa | -disablesystemassertionsdisable system assertions-agentlib:<libname>[=<options>]load native agent library <libname>, e.g. -agentlib:hprofsee also, -agentlib:jdwp=help and -agentlib:hprof=help-agentpath:<pathname>[=<options>]load native agent library by full pathname-javaagent:<jarpath>[=<options>]load Java programming language agent, see java.lang.instrument-splash:<imagepath>show splash screen with specified imageC:\Users\wangwei1>
?
附錄 2: 擴展參數
C:\Users\wangwei1>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.C:\Users\wangwei1>?
轉載于:https://www.cnblogs.com/davidwang456/p/3730481.html
總結
以上是生活随笔為你收集整理的Java命令行运行参数说明大全--转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Open quote is expect
- 下一篇: ArrayList的实现原理--转