1.總述
java命令用來啟動一個java應(yīng)用纯露。有以下兩種用法:
java [options] mainClass [args...]
java [options] -jar jarfile [args...]
第一種從指定的java類開始啟動,第二種從可運(yùn)行的jar開始啟動。java應(yīng)用啟動的過程有三個步驟,首先啟動java運(yùn)行時環(huán)境JRE,然后加載所需的類挽唉,最后調(diào)用類的main方法达传。
命令行的各部分含義如下:
options 由空格分隔的命令行選項零院,下一節(jié)詳細(xì)說明
mainClass 待啟動類包含包路徑的類全名,其中需要有main()方法
jarfile 待啟動的jar包的路徑名稱
args 傳給啟動類的main()方法的參數(shù)懒闷,用空格分開
2.命令行選項
java的命令行選項分為三類:
1.標(biāo)準(zhǔn)選項十减。jvm必須實現(xiàn)的選項,實現(xiàn)通用的功能愤估,如檢查運(yùn)行環(huán)境帮辟,檢查JRE的版本,設(shè)置類路徑等玩焰。
2.擴(kuò)展選項由驹。HotSpot虛擬機(jī)實現(xiàn)常用功能的選項,其他jvm不一定實現(xiàn)昔园。此類選項前綴為:-x
3,高級選項蔓榄。高級選項是開發(fā)者選項并炮,不保證在所有的jvm上實現(xiàn),并可能會改變甥郑。高級選項也可以分為如下四種類型:
1) 高級運(yùn)行時選項:控制jvm運(yùn)行時的行為
2) 高級維護(hù)性選項:支持收集系統(tǒng)信息和調(diào)試
3) 高級GC選項:控制jvm的垃圾收集行為
4) 高級JIT選項:控制jvm的及時編譯行為
3.標(biāo)準(zhǔn)選項
-version 打印版本信息然后退出逃魄,經(jīng)常使用該參數(shù)來打印java的版本或者驗證java是否可用。
-Dproperty=value 設(shè)置系統(tǒng)屬性的值澜搅。其中屬性名不能含喲空白字符伍俘,屬性值如果含有空白字符,需要用引號括起來勉躺。如下:
-Dhello="hello world"
該值可以在java程序中用如下代碼獲取:
System.getProperty("hello")
-server -client 指定jvm的模式癌瘾,client模式用于桌面應(yīng)用,server模式用于服務(wù)端應(yīng)用赂蕴。jvm對兩種模式有相應(yīng)的優(yōu)化柳弄,client模式加載速度快,可以快速啟動概说,server模式加載速度較慢但運(yùn)行起來快碧注。
-agentlib:libname[=options] 加載指定的native代理庫√桥猓可以指定多個庫萍丐,用,
分隔。
4.擴(kuò)展選項
-Xmx size 指定堆的最大大小放典。如果指定2GB的最大堆逝变,可用如下任意方式表示:
-Xmx2G
-Xmx2048m
-Xmx2097152K
- Xmx2147483648
此外,該選項等效于 -XX:MaxHeapSize
-Xms size 指定堆的初始化的大小奋构。對于server端的應(yīng)用壳影,建議將-Xmx
和-Xms
設(shè)置為相同的值方可獲取更好的性能。如果不設(shè)置該值弥臼,那么該值默認(rèn)就為新生代和老年代的大小的和宴咧。
-Xmn size 指定堆中新生代的初始化的值。官方建議將該值設(shè)置為堆的最大值的25%-50%區(qū)間內(nèi)径缅。
-Xss size 指定線程棧的大小掺栅。該選項的默認(rèn)值隨操作系統(tǒng)的不同而不同。linux環(huán)境下默認(rèn)為1m纳猪,windows環(huán)境下取決于虛擬內(nèi)存的大小氧卧。該選項等效于 -XX:XX:ThreadStackSize
5.高級運(yùn)行時選項
-XX:MaxHeapSize=size 設(shè)置最大堆大小,見-Xmx
-XX:InitialHeapSize=size 設(shè)置初始堆大小氏堤,見-Xms
-XX:NewSize 設(shè)置新生代初始大小沙绝,見-Xmn
-XX:ThreadStackSize=size 設(shè)置線程棧大小,見-Xss
-XX:MaxMetaspaceSize=size 設(shè)置永久代大小,JDK8以下使用-XX:MaxPermSize=size
-XX:MaxDirectMemorySize=size 設(shè)置Java Nio可以使用的最大直接內(nèi)存宿饱。默認(rèn)情況下熏瞄,該選項值為0,JVM將會自主確定一個大小值谬以。
6.高級維護(hù)性選項
-XX:+HeapDumpOnOutOfMemoryError 開啟堆轉(zhuǎn)儲功能强饮。當(dāng)Java應(yīng)用拋出OutOfMemoryError
異常時可以使用堆轉(zhuǎn)儲工具(HPROF)將Java堆存儲到文件中。默認(rèn)文件存儲在當(dāng)前路徑下为黎,文件名為java_pid[pid].hprof
邮丰。此外,還可使用選項-XX:HeapDumpPath=path
指定文件地址铭乾。一個示例如下(其中%p表示進(jìn)程PID):
-XX:HeapDumpPath=/data/log/java_pid%p.hprof
-XX:LogFile=path 設(shè)置日志文件的地址剪廉。默認(rèn)情況下,文件被寫到當(dāng)前目錄下炕檩,文件名為hotspot.log
斗蒋。一個示例如下:
-XX:LogFile=/data/log/hotspot.log
-XX:OnOutOfMemoryError=string 設(shè)置發(fā)生OutOfMemoryError
后執(zhí)行的處理命令,多個命令可使用分號;分隔笛质。如果命令中含有空格泉沾,需要使用雙引號"包裹命令。
本文只是列出了java命令行的部分命令妇押,更詳細(xì)的信息可參考官網(wǎng)介紹
java命令行指南