Vincent Jia 博客

          to be a better man, to be a bad man.

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            29 隨筆 :: 3 文章 :: 0 評(píng)論 :: 0 Trackbacks
          <2011年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿

          隨筆分類(1)

          隨筆檔案(25)

          文章檔案(3)

          JAVA

          三網(wǎng)融合

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          前段時(shí)間系統(tǒng)升級(jí)時(shí)遭遇了OOM,具體解決過(guò)程見(jiàn) 遭遇OutOfMemoryError
          為了鞏固對(duì)于java啟動(dòng)各項(xiàng)參數(shù)的認(rèn)識(shí),決定將所有參數(shù)列舉出來(lái),并一一解釋,以便后查;

          java啟動(dòng)參數(shù)共分為三類;
          其一是標(biāo)準(zhǔn)參數(shù)(-),所有的JVM實(shí)現(xiàn)都必須實(shí)現(xiàn)這些參數(shù)的功能,而且向后兼容;
          其二是非標(biāo)準(zhǔn)參數(shù)(-X),默認(rèn)jvm實(shí)現(xiàn)這些參數(shù)的功能,但是并不保證所有jvm實(shí)現(xiàn)都滿足,且不保證向后兼容;
          其三是非Stable參數(shù)(-XX),此類參數(shù)各個(gè)jvm實(shí)現(xiàn)會(huì)有所不同,將來(lái)可能會(huì)隨時(shí)取消,需要慎重使用;
          本文主要描述標(biāo)準(zhǔn)參數(shù)部分,剩下的兩個(gè)部分將會(huì)陸續(xù)推出;

          標(biāo)準(zhǔn)參數(shù)列表如下:
          -client 
           設(shè)置jvm使用client模式,特點(diǎn)是啟動(dòng)速度比較快,但運(yùn)行時(shí)性能和內(nèi)存管理效率不高,通常用于客戶端應(yīng)用程序或者PC應(yīng)用開(kāi)發(fā)和調(diào)試。

          -server
           設(shè)置jvm使server模式,特點(diǎn)是啟動(dòng)速度比較慢,但運(yùn)行時(shí)性能和內(nèi)存管理效率很高,適用于生產(chǎn)環(huán)境。在具有64位能力的jdk環(huán)境下將默認(rèn)啟用該模式,而忽略-client參數(shù)。

          -agentlib:libname[=options] 
           用于裝載本地lib包;
           其中l(wèi)ibname為本地代理庫(kù)文件名,默認(rèn)搜索路徑為環(huán)境變量PATH中的路徑,options為傳給本地庫(kù)啟動(dòng)時(shí)的參數(shù),多個(gè)參數(shù)之間用逗號(hào)分隔。在Windows平臺(tái)上jvm搜索本地庫(kù)名為libname.dll的文件,在linux上jvm搜索本地庫(kù)名為libname.so的文件,搜索路徑環(huán)境變量在不同系統(tǒng)上有所不同,比如Solaries上就默認(rèn)搜索LD_LIBRARY_PATH。
           比如:-agentlib:hprof
           用來(lái)獲取jvm的運(yùn)行情況,包括CPU、內(nèi)存、線程等的運(yùn)行數(shù)據(jù),并可輸出到指定文件中;windows中搜索路徑為JRE_HOME/bin/hprof.dll。

          -agentpath:pathname[=options] 
           按全路徑裝載本地庫(kù),不再搜索PATH中的路徑;其他功能和agentlib相同;更多的信息待續(xù),在后續(xù)的JVMTI部分會(huì)詳述。

          -classpath classpath 
          -cp classpath
           
           告知jvm搜索目錄名、jar文檔名、zip文檔名,之間用分號(hào);分隔;使用-classpath后jvm將不再使用CLASSPATH中的類搜索路徑,如果-classpath和CLASSPATH都沒(méi)有設(shè)置,則jvm使用當(dāng)前路徑(.)作為類搜索路徑。
           jvm搜索類的方式和順序?yàn)椋築ootstrap,Extension,User。
           Bootstrap中的路徑是jvm自帶的jar或zip文件,jvm首先搜索這些包文件,用System.getProperty("sun.boot.class.path")可得到搜索路徑。
           Extension是位于JRE_HOME/lib/ext目錄下的jar文件,jvm在搜索完Bootstrap后就搜索該目錄下的jar文件,用System.getProperty("java.ext.dirs")可得到搜索路徑。
           User搜索順序?yàn)楫?dāng)前路徑.、CLASSPATH、-classpath,jvm最后搜索這些目錄,用System.getProperty("java.class.path")可得到搜索路徑。

          -Dproperty=value
           設(shè)置系統(tǒng)屬性名/值對(duì),運(yùn)行在此jvm之上的應(yīng)用程序可用System.getProperty("property")得到value的值。
           如果value中有空格,則需要用雙引號(hào)將該值括起來(lái),如-Dname="space string"。
           該參數(shù)通常用于設(shè)置系統(tǒng)級(jí)全局變量值,如配置文件路徑,以便該屬性在程序中任何地方都可訪問(wèn)。

          -enableassertions[:<package name>"..." | :<class name> ] 
          -ea[:<package name>"..." | :<class name> ]
           
           上述參數(shù)就用來(lái)設(shè)置jvm是否啟動(dòng)斷言機(jī)制(從JDK 1.4開(kāi)始支持),缺省時(shí)jvm關(guān)閉斷言機(jī)制。
           用-ea 可打開(kāi)斷言機(jī)制,不加<packagename>和classname時(shí)運(yùn)行所有包和類中的斷言,如果希望只運(yùn)行某些包或類中的斷言,可將包名或類名加到-ea之后。例如要啟動(dòng)包c(diǎn)om.wombat.fruitbat中的斷言,可用命令java -ea:com.wombat.fruitbat...<Main Class>。

          -disableassertions[:<package name>"..." | :<class ; ] 
          -da[:<package name>"..." | :<class name> ]

           用來(lái)設(shè)置jvm關(guān)閉斷言處理,packagename和classname的使用方法和-ea相同,jvm默認(rèn)就是關(guān)閉狀態(tài)。
           該參數(shù)一般用于相同package內(nèi)某些class不需要斷言的場(chǎng)景,比如com.wombat.fruitbat需要斷言,但是com.wombat.fruitbat.Brickbat該類不需要,則可以如下運(yùn)行:
           java -ea:com.wombat.fruitbat...-da:com.wombat.fruitbat.Brickbat <Main Class>。
           
          -enablesystemassertions 
          -esa
           
           激活系統(tǒng)類的斷言。
           
          -disablesystemassertions 
          -dsa
           
           關(guān)閉系統(tǒng)類的斷言。

          -jar 
           指定以jar包的形式執(zhí)行一個(gè)應(yīng)用程序。
           要這樣執(zhí)行一個(gè)應(yīng)用程序,必須讓jar包的manifest文件中聲明初始加載的Main-class,當(dāng)然那Main-class必須有public static void main(String[] args)方法。

          -javaagent:jarpath[=options] 
           指定jvm啟動(dòng)時(shí)裝入java語(yǔ)言設(shè)備代理。
           Jarpath文件中的mainfest文件必須有Agent-Class屬性。代理類也必須實(shí)現(xiàn)公共的靜態(tài)public static void premain(String agentArgs, Instrumentation inst)方法(和main方法類似)。當(dāng)jvm初始化時(shí),將按代理類的說(shuō)明順序調(diào)用premain方法;具體參見(jiàn)java.lang.instrument軟件包的描述。

          -verbose 
          -verbose:class
           
           輸出jvm載入類的相關(guān)信息,當(dāng)jvm報(bào)告說(shuō)找不到類或者類沖突時(shí)可此進(jìn)行診斷。
          -verbose:gc 
           輸出每次GC的相關(guān)情況。
          -verbose:jni 
           輸出native方法調(diào)用的相關(guān)情況,一般用于診斷jni調(diào)用錯(cuò)誤信息。
           
          -version 
           輸出java的版本信息,比如jdk版本、vendor、model。
          -version:release 
           指定class或者jar運(yùn)行時(shí)需要的jdk版本信息;若指定版本未找到,則以能找到的系統(tǒng)默認(rèn)jdk版本執(zhí)行;一般情況下,對(duì)于jar文件,可以在manifest文件中指定需要的版本信息,而不是在命令行。
           release中可以指定單個(gè)版本,也可以指定一個(gè)列表,中間用空格隔開(kāi),且支持復(fù)雜組合,比如:
           -version:"1.5.0_04 1.5*&1.5.1_02+"
           指定class或者jar需要jdk版本為1.5.0_04或者是1.5系列中比1.5.1_02更高的所有版本。

          -showversion 
           輸出java版本信息(與-version相同)之后,繼續(xù)輸出java的標(biāo)準(zhǔn)參數(shù)列表及其描述。
           
          -? 
          -help
           
           輸出java標(biāo)準(zhǔn)參數(shù)列表及其描述。

          -X 
           輸出非標(biāo)準(zhǔn)的參數(shù)列表及其描述。

          以上的這些參數(shù)我們經(jīng)常會(huì)在很多情況下用到多個(gè)的組合,比如我們?cè)谟肑Profiler進(jìn)行跟蹤監(jiān)控時(shí),需要在被監(jiān)控java啟動(dòng)參數(shù)中加上如下配置:
          -agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/usr/local/jprofiler5/bin/agent.jar
          其中就用到兩個(gè)-agentlib和-X參數(shù),bootclasspath參數(shù)的詳細(xì)信息將會(huì)在非標(biāo)準(zhǔn)參數(shù)中詳細(xì)說(shuō)明。

          轉(zhuǎn)自:http://blog.csdn.net/sfdev/article/details/2062042

          這篇文章補(bǔ)充說(shuō)明了-X、-XX參數(shù)的說(shuō)明:Java命令行運(yùn)行參數(shù)說(shuō)明大全(偷來(lái)的)

          posted on 2011-12-08 15:49 iLinux 閱讀(5151) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 龙川县| 常宁市| 邓州市| 民勤县| 平安县| 平谷区| 蕲春县| 张家口市| 峨眉山市| 商城县| 谷城县| 娄底市| 青海省| 孟村| 疏勒县| 台南县| 桐乡市| 定襄县| 澳门| 酉阳| 甘南县| 凌海市| 镇康县| 尉氏县| 石林| 阳谷县| 安新县| 原阳县| 宜兰市| 万盛区| 蛟河市| 阳谷县| 雅安市| 体育| 景德镇市| 景东| 家居| 新营市| 元江| 专栏| 西城区|