Java参数详解(转载)
?1. Java VM?
??? 運(yùn)行于linux平臺(tái)上的JVM會(huì)讀取/etc/sysconfig/i18n中的參數(shù)來(lái)決定輸出流的編碼方式,如果在安裝linux系統(tǒng)過(guò)程中沒(méi)有選擇中文,JVM就不能數(shù)據(jù)中文編碼的文字。打開(kāi)/etc/sysconfig/i18n,注意這兩行:?
LANGUAGE="en_US.ISO8859" --該行指明了語(yǔ)言的編碼方式?
SUPPORTED="en_US.UTF-8:zh_CN.UTF-8:zh_CN.GB2312:zh.: " --該行指明了支持的編碼方式?
????如果i18n文件是這樣的那么JVM會(huì)按照其中指明的LANGUAGE參數(shù)來(lái)決定字符流的編碼方式,在這里就會(huì)按照ISO8859格式來(lái)編碼輸出,這時(shí)如果有中文需要顯示就會(huì)輸出亂碼。只需將i18N文件的LANGUAGE參數(shù)改為以下的格式即可顯示中文?
LANGUAGE=" zh_CN.GB2312"?或?LANGUAGE=" zh_CN.GBK" --GB2312是GBK的子集
2. Resource Bundle?
經(jīng)過(guò)以上步驟EOS Server應(yīng)可以正確顯示中文,但EOS調(diào)試服務(wù)器和EOS
Mgr Server使用了Resource Bundle文件來(lái)顯示字符,這時(shí)需要指定一個(gè)參數(shù)讓Resource Bundle能夠選擇正確的編碼方式。打開(kāi)啟動(dòng)EOS Server的腳本文件例如:?startWebLogic.sh或startTomcat.sh,在啟動(dòng)的那一行將EOS_I18N2GB參數(shù)設(shè)置為true?
????在Java、J2EE大型應(yīng)用中,JVM非標(biāo)準(zhǔn)參數(shù)的配置直接關(guān)系到整個(gè)系統(tǒng)的性能。?
????JVM非標(biāo)準(zhǔn)參數(shù)指的是JVM底層的一些配置參數(shù),這些參數(shù)在一般開(kāi)發(fā)中默認(rèn)即可,不需要任何配置。但是在生產(chǎn)環(huán)境中,為了提高性能,往往需要調(diào)整這些參數(shù),以求系統(tǒng)達(dá)到最佳新能。?
????另外這些參數(shù)的配置也是影響系統(tǒng)穩(wěn)定性的一個(gè)重要因素,相信大多數(shù)Java開(kāi)發(fā)人員都見(jiàn)過(guò)“OutOfMemory”類型的錯(cuò)誤。呵呵,這其中很可能就是JVM參數(shù)配置不當(dāng)或者就沒(méi)有配置沒(méi)意識(shí)到配置引起的。為了說(shuō)明這些參數(shù),還需要說(shuō)說(shuō)JDK中的命令行工具一些知識(shí)做鋪墊。?
首先看如何獲取這些命令配置信息說(shuō)明:?
????假設(shè)你是windows平臺(tái),你安裝了J2SDK,那么現(xiàn)在你從cmd控制臺(tái)窗口進(jìn)入J2SDK安裝目錄下的bin目錄,然后運(yùn)行java命令,出現(xiàn)如下結(jié)果,這些就是包括java.exe工具的和JVM的所有命令都在里面。?
---------------------------------------------------------------------
D:\j2sdk15\bin>java?
Usage: java [-options] class [args...]??(to execute a class) or?java [-options] -jar jarfile [args...] (to execute a jar file)
where options include:?
??? -client?????? to select the "client" VM?
??? -server?????? to select the "server" VM?
??? -hotspot????? is a synonym for the "client" VM? [deprecated]?
????????????????? The default VM is client.?
??? -cp?
??? -classpath?
????????????????? A ; separated list of directories, JAR archives,?
????????????????? and ZIP archives to search for class files.?
??? -D=?
????????????????? set a system property?
??? -verbose[:class|gc|jni]?
????????????????? enable verbose output?
??? -version????? print product version and exit?
??? -version:?
????????????????? require the specified version to run?
??? -showversion? print product version and continue?
??? -jre-restrict-search | -jre-no-restrict-search?
????????????????? include/exclude user private JREs in the version
??????????????????search?
??? -? -help????? print this help message?
??? -X??????????? print help on non-standard options?
??? -ea[:...|:]?
??? -enableassertions[:...|:]???enable assertions?
??? -da[:...|:]?
??? -disableassertions[:...|:]??disable assertions?
??? -esa | -enablesystemassertions enable system assertions?
??? -dsa | -disablesystemassertions disable system assertions?
??? -agentlib:[=]?
????????????????? load native agent library ,
e.g. -agentlib:hprof see also,
-agentlib:jdwp=help and -agentlib:hprof=help?
-agentpath:[=] load native agent library by full pathname?
-javaagent:[=] load Java programming language agent,
see java.lang.instrument?
---------------------------------------------------------------------
在控制臺(tái)輸出信息中,有個(gè)-X(注意是大寫(xiě))的命令,這個(gè)正是查看JVM配置參數(shù)的命令。
其次,用java -X?命令查看JVM的配置說(shuō)明:?
運(yùn)行后如下結(jié)果,這些就是配置JVM參數(shù)的秘密武器,這些信息都是英文的,為了方便閱讀,我根據(jù)自己的理解翻譯成中文了(不準(zhǔn)確的地方還請(qǐng)各位博友斧正)?
---------------------------------------------------------------------
D:\j2sdk15\bin>java -X?
??? -Xmixed?????????? mixed mode execution (default)?
??? -Xint???????????? interpreted mode execution only?
??? -Xbootclasspath: set search path for bootstrap classes and resources?
??? -Xbootclasspath/a: append to end of bootstrap class path?
??? -Xbootclasspath/p: prepend in front of bootstrap class path?
??? -Xnoclassgc?????? disable class garbage collection?
??? -Xincgc?????enable incremental garbage collection?
??? -Xloggc:??? log GC status to a file with time stamps?
??? -Xbatch?????disable background compilation?
??? -Xms??????? set initial Java heap size?
??? -Xmx??????? set maximum Java heap size?
??? -Xss??????? 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配置參數(shù)中文說(shuō)明:?
---------------------------------------------------------------------
1、-Xmixed?????????? mixed mode execution (default)?
混合模式執(zhí)行?
2、-Xint???????????? interpreted mode execution only?
解釋模式執(zhí)行?
3、-Xbootclasspath:?
????? set search path for bootstrap classes and resources?
設(shè)置zip/jar資源或者類(.class文件)存放目錄路徑?
3、-Xbootclasspath/a:?
????? append to end of bootstrap class path?
追加zip/jar資源或者類(.class文件)存放目錄路徑?
4、-Xbootclasspath/p:?
????? prepend in front of bootstrap class path?
預(yù)先加載zip/jar資源或者類(.class文件)存放目錄路徑?
5、-Xnoclassgc?????? disable class garbage collection?
關(guān)閉類垃圾回收功能?
6、-Xincgc?????????? enable incremental garbage collection?
開(kāi)啟類的垃圾回收功能?
7、-Xloggc:??? log GC status to a file with time stamps?
記錄垃圾回日志到一個(gè)文件。?
8、-Xbatch?????????? disable background compilation?
關(guān)閉后臺(tái)編譯?
9、-Xms??????? set initial Java heap size?
設(shè)置JVM初始化堆內(nèi)存大小?
10、-Xmx??????? set maximum Java heap size?
設(shè)置JVM最大的堆內(nèi)存大小?
11、-Xss??????? set java thread stack size?
設(shè)置JVM棧內(nèi)存大小?
12、-Xprof??????????? output cpu profiling data?
輸入CPU概要表數(shù)據(jù)?
13、-Xfuture?????????enable strictest checks, anticipating future default?
執(zhí)行嚴(yán)格的代碼檢查,預(yù)測(cè)可能出現(xiàn)的情況?
14、-Xrs?????????????reduce use of OS signals by Java/VM (see documentation)?通過(guò)JVM還原操作系統(tǒng)信號(hào)?
15、-Xcheck:jni?????? perform additional checks for JNI functions?
對(duì)JNI函數(shù)執(zhí)行檢查?
16、-Xshare:off?????? do not attempt to use shared class data?
盡可能不去使用共享類的數(shù)據(jù)?
17、-Xshare:auto????? use shared class data if possible (default)?
盡可能的使用共享類的數(shù)據(jù)?
18、-Xshare:on?????? require using shared class data, otherwise fail.?
盡可能的使用共享類的數(shù)據(jù),否則運(yùn)行失敗?
The -X options are non-standard and subject to change without notice.?
---------------------------------------------------------------------
怎么用這這些參數(shù)呢?其實(shí)所有的命令行都是這么一用,下面我就給出一個(gè)最簡(jiǎn)單的HelloWorl的例子來(lái)演示這個(gè)參數(shù)的用法,非常的簡(jiǎn)單。?
HelloWorld.java?
-----------------------------------------------?
public class? HelloWorld {?
???public static void main(String[] args)?
??{?
?????System.out.println("Hello World!");?
???}?
}?
編譯并運(yùn)行:?
D:\j2sdk15\bin>javac HelloWorld.java?
D:\j2sdk15\bin>java -Xms256M -Xmx512M HelloWorld?
Hello World!?
呵呵,這下滿足了吧!
實(shí)踐:在大型系統(tǒng)或者應(yīng)用中配置JVM參數(shù)?
比如你配置IDE工具的參數(shù),常見(jiàn)的有IDEA、Eclipse,這個(gè)是在一個(gè)配置文件中指定即可。?
如果你要在J2EE環(huán)境中配置這些參數(shù),那么你需要在J2EE應(yīng)用服務(wù)器或者Servlet容器相關(guān)啟動(dòng)參數(shù)設(shè)置處指定,其啟動(dòng)文件中來(lái)配置,?
Tomcat是在catalina.bat中配置,weblogic和websphere是在其他地方,具體我就說(shuō)了,相信玩過(guò)的這些大型服務(wù)器的人都知道,沒(méi)玩過(guò)的看看這篇文章,玩玩就知道了,呵呵。?
????另外常常有人問(wèn)到j(luò)dk的一些相關(guān)命令用法,其實(shí),當(dāng)你看到這里的時(shí)候,你應(yīng)該知道如何獲取這些命令的用法了。如果你還不會(huì),那么,建議你去學(xué)學(xué)DOS,我是沒(méi)轍了。如果你會(huì)這些,還是沒(méi)有看明白,那么你趕緊學(xué)學(xué)英語(yǔ)吧,這樣你就能看懂了。?
另外:我在最后給出常用的幾個(gè)Java命令行說(shuō)明,以供參考:?
(1)、javac?
用法:javac <選項(xiàng)> <源文件>?
其中,可能的選項(xiàng)包括:?
? -g?????????????????????????生成所有調(diào)試信息?
? -g:none????????????????????不生成任何調(diào)試信息?
? -g:{lines,vars,source}?????只生成某些調(diào)試信息?
? -nowarn????????????????????不生成任何警告?
? -verbose???????????????????輸出有關(guān)編譯器正在執(zhí)行的操作的消息?
? -deprecation???????????????輸出使用已過(guò)時(shí)的?API?的源位置?
? -classpath <路徑>????????????指定查找用戶類文件的位置?
? -cp <路徑>???????????????????指定查找用戶類文件的位置?
? -sourcepath <路徑>???????????指定查找輸入源文件的位置?
? -bootclasspath <路徑>????????覆蓋引導(dǎo)類文件的位置?
? -extdirs <目錄>??????????????覆蓋安裝的擴(kuò)展目錄的位置?
? -endorseddirs <目錄>?????????覆蓋簽名的標(biāo)準(zhǔn)路徑的位置?
? -d <目錄>????????????????????指定存放生成的類文件的位置?
? -encoding <編碼>?????????????指定源文件使用的字符編碼?
? -source <版本>???????????????提供與指定版本的源兼容性?
? -target <版本>???????????????生成特定?VM?版本的類文件?
? -version???????????????????版本信息?
? -help??????????????????????輸出標(biāo)準(zhǔn)選項(xiàng)的提要?
? -X?????????????????????????輸出非標(biāo)準(zhǔn)選項(xiàng)的提要?
? -J<標(biāo)志>?????????????????????直接將?<標(biāo)志>?傳遞給運(yùn)行時(shí)系統(tǒng)?
(2)、jar?
用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C?目錄](méi)?文件名?...?
選項(xiàng):?
??? -c??創(chuàng)建新的存檔?
??? -t??列出存檔內(nèi)容的列表?
??? -x??展開(kāi)存檔中的命名的(或所有的〕文件?
??? -u??更新已存在的存檔?
??? -v??生成詳細(xì)輸出到標(biāo)準(zhǔn)輸出上?
??? -f??指定存檔文件名?
??? -m??包含來(lái)自標(biāo)明文件的標(biāo)明信息?
??? -0??只存儲(chǔ)方式;未用ZIP壓縮格式?
??? -M??不產(chǎn)生所有項(xiàng)的清單(manifest〕文件?
??? -i??為指定的jar文件產(chǎn)生索引信息?
??? -C??改變到指定的目錄,并且包含下列文件:?
如果一個(gè)文件名是一個(gè)目錄,它將被遞歸處理。?
清單(manifest〕文件名和存檔文件名都需要被指定,按'm'?和?'f'標(biāo)志指定的相同順序。?
示例1:將兩個(gè)class文件存檔到一個(gè)名為?'classes.jar'?的存檔文件中:
?????? jar cvf classes.jar Foo.class Bar.class?
示例2:用一個(gè)下的所有?
???????????文件存檔到一個(gè)名為?'classes.jar'?的存檔文件中:?
?????? jar cvfm classes.jar mymanifest -C foo/ .?
(3)、javadoc?
javadoc:?錯(cuò)誤?-?未指定軟件包或類。?
用法:javadoc [選項(xiàng)] [軟件包名稱] [源文件] [@file]?
-overview <文件>??????????讀取?HTML?文件的概述文檔?
-public???????????????????僅顯示公共類和成員?
-protected????????????????顯示受保護(hù)/公共類和成員(默認(rèn))
-package??????????????????顯示軟件包/受保護(hù)/公共類和成員?
-private??????????????????顯示所有類和成員?
-help?????????????????????顯示命令行選項(xiàng)并退出?
-doclet <類>??????????????通過(guò)替代?doclet?生成輸出?
-docletpath <路徑>????????指定查找?doclet?類文件的位置?
-sourcepath <路徑列表>????指定查找源文件的位置?
-classpath <路徑列表>?????指定查找用戶類文件的位置?
-exclude <軟件包列表>?????指定要排除的軟件包的列表?
-subpackages <子軟件包列表>?指定要遞歸裝入的子軟件包?
-breakiterator????????????使用?BreakIterator?計(jì)算第?1?句?
-bootclasspath <路徑列表>?覆蓋引導(dǎo)類加載器所裝入的?
??????????????????????????類文件的位置?
-source <版本>????????????提供與指定版本的源兼容性?
-extdirs <目錄列表>???????覆蓋安裝的擴(kuò)展目錄的位置?
-verbose??????????????????輸出有關(guān)?Javadoc?正在執(zhí)行的操作的消息?
-locale <名稱>????????????要使用的語(yǔ)言環(huán)境,例如?en_US?或?en_US_WIN?
-encoding <名稱>??????????源文件編碼名稱?
-quiet????????????????????不顯示狀態(tài)消息?
-J<標(biāo)志>??????????????????直接將?<標(biāo)志>?傳遞給運(yùn)行時(shí)系統(tǒng)?
通過(guò)標(biāo)準(zhǔn)?doclet?提供:?
-d <目錄>?????????????????????????輸出文件的目標(biāo)目錄?
-use??????????????????????????????創(chuàng)建類和軟件包用法頁(yè)面?
-version??????????????????????????包含?@version?段?
-author???????????????????????????包含?@author?段?
-docfilessubdirs??????????????????遞歸復(fù)制文檔文件子目錄?
-splitindex???????????????????????將索引分為每個(gè)字母對(duì)應(yīng)一個(gè)文件?
-windowtitle <文本>???????????????文檔的瀏覽器窗口標(biāo)題?
-doctitle??????????????包含概述頁(yè)面的標(biāo)題?
-header????????????????包含每個(gè)頁(yè)面的頁(yè)眉文本?
-footer????????????????包含每個(gè)頁(yè)面的頁(yè)腳文本?
-bottom????????????????包含每個(gè)頁(yè)面的底部文本?
-link????????????????????????創(chuàng)建指向位于 的?javadoc?輸出的鏈接
-linkoffline??????????利用位于 的軟件包列表鏈接至位于的文檔?
-excludedocfilessubdir <名稱?1>:排除帶有給定名稱的所有文檔文件子目錄。?
-group <名稱> :..?????????在概述頁(yè)面中,將指定的軟件包分組?
-nocomment????????????????????????抑止描述和標(biāo)記,只生成聲明。?
-nodeprecated?????????????????????不包含?@deprecated?信息?
-noqualifier <名稱?1>:<名稱?2>:...從輸出中排除限定符的列表。?
-nosince??????????????????????????不包含?@since?信息?
-notimestamp??????????????????????不包含隱藏時(shí)間戳?
-nodeprecatedlist?????????????????不生成已過(guò)時(shí)的列表?
-notree???????????????????????????不生成類分層結(jié)構(gòu)?
-noindex??????????????????????????不生成索引?
-nohelp???????????????????????????不生成幫助鏈接?
-nonavbar?????????????????????????不生成導(dǎo)航欄?
-serialwarn???????????????????????生成有關(guān)?@serial?標(biāo)記的警告?
-tag <名稱>:<位置>:<標(biāo)題>?????????指定單個(gè)變量自定義標(biāo)記?
-taglet???????????????????????????要注冊(cè)的?Taglet?的全限定名稱?
-tagletpath?????????????????????? Taglet?的路徑?
-charset <字符集>?????????????????用于跨平臺(tái)查看生成的文檔的字符集。
-helpfile <文件>??????????????????包含幫助鏈接所鏈接到的文件?
-linksource???????????????????????以?HTML?格式生成源?
-sourcetab <制表符長(zhǎng)度>???????????指定源中每個(gè)制表符占據(jù)的空格數(shù)?
-keywords?????????????????????????使軟件包、類和成員信息附帶?HTML?元標(biāo)
???????????????????記?
-stylesheetfile <路徑>????????????用于更改生成文檔的樣式的文件?
-docencoding <名稱>???????????????輸出編碼名稱?
(4)、rmid?
rmid:?非法選項(xiàng):-??
用法:rmid?
其中, 包括:?
? -port?????????指定供?rmid?使用的端口?
? -log?????指定?rmid?將日志寫(xiě)入的目錄?
? -stop???????????????停止當(dāng)前的?rmid?調(diào)用(對(duì)指定端口)?
? -C????向每個(gè)子進(jìn)程傳遞參數(shù)(激活組)
轉(zhuǎn)載于:https://www.cnblogs.com/diyunpeng/archive/2010/10/25/1860291.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Java参数详解(转载)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 16、用VS2005调试编译驱动程序
- 下一篇: Oracle表空间规划处理