Java命令列運行參數

來源:互聯網
上載者:User

標籤:temp   否則   dna   post   doc   用戶端   off   sde   作業系統   

  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上預設採用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中尋找該類,否則虛擬機器就會拋出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”。
  該參數通常用於設定系統級全域變數值,如設定檔的路徑,應為該屬性在程式中任何地方都可訪問。

6.    -verbose[:class|gc|jni]
在輸出裝置上顯示虛擬機器運行資訊。
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方法。
參見: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.

資料來源:http://www.cnblogs.com/z-sm/

Java命令列運行參數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.