java命令行參數(shù)詳解
作為一個(gè)java程序員,我始終保持謙遜進(jìn)取的態(tài)度去對待,始終重視基礎(chǔ)知識的學(xué)習(xí),我覺得工作久了勢必需要一些工具在身邊,我的老大老是diss我,說我能發(fā)現(xiàn)和解決問題,但是效率不高,那是因?yàn)槲颐看味济嫦虬俣染幊蹋瑳]有收集和整理工具的習(xí)慣,于是就有了本篇文章。
讀完本篇文章你會了解到j(luò)ava命令參數(shù)的含義,并可初步使用java命令來更好的啟動和創(chuàng)建我們的應(yīng)用。
創(chuàng)建和編譯應(yīng)用

這里可以看到一些內(nèi)置命令工具,我按使用程度對他們進(jìn)行了排序:
java:Launches a Java application.,啟動一個(gè)java應(yīng)用比如java -jar
javac:Reads Java class and interface definitions and compiles them into bytecode and class files.,編譯工具,將源代碼編譯成字節(jié)碼或者class文件
javap:Disassembles one or more class files.,反匯編
javadoc:Generates HTML pages of API documentation from Java source files.java API文檔生成工具
jar:Manipulates Java Archive (JAR) files.操作jar包的,jar包本質(zhì)上也是zip文件。
jdb:Finds and fixes bugs in Java platform programs.java debug,有idea后幾乎不用了。
java的命令行參數(shù)描述
這么多工具,我們主要來介紹java命令,文檔里說明了:當(dāng)我們使用java命令啟動應(yīng)用時(shí),該應(yīng)用就通過jre來加載特定的類,并調(diào)用main方法,該方法必須聲明為 public 和 static,它不能返回任何值,并且它必須接受一個(gè) String 數(shù)組作為參數(shù)。

java命令的選項(xiàng)參數(shù)
java命令給我們提供了非常多的命令參數(shù),當(dāng)然也有非常多的劃分,但我認(rèn)為主要是兩種劃分:第一種是按選項(xiàng)進(jìn)行劃分,第二種是按照使用環(huán)境區(qū)分,我們可以使用java命令來看下:

選項(xiàng)劃分
標(biāo)準(zhǔn)選項(xiàng):以“-”開頭,比如-help -version,Java 虛擬機(jī) (JVM) 的所有實(shí)現(xiàn)都保證支持標(biāo)準(zhǔn)選項(xiàng)。
非標(biāo)準(zhǔn)選項(xiàng):以“-X”開頭,特定于Java HotSpot 虛擬機(jī)的通用選項(xiàng),因此不能保證所有 JVM 實(shí)現(xiàn)都支持它們,并且可能會發(fā)生變化。
高級選項(xiàng):以“-XX”開頭,這些是用于調(diào)整 Java HotSpot 虛擬機(jī)操作的特定區(qū)域的開發(fā)人員選項(xiàng),這些區(qū)域通常具有特定的系統(tǒng)要求,并且可能需要對系統(tǒng)配置參數(shù)的特權(quán)訪問。也不能保證所有 JVM 實(shí)現(xiàn)都支持它們,并且可能會發(fā)生變化。
布爾選項(xiàng):用于啟用默認(rèn)禁用的功能或禁用默認(rèn)啟用的功能。此類選項(xiàng)不需要參數(shù)。布爾 -XX 選項(xiàng)使用加號 (-XX:+OptionName) 啟用,使用減號 (-XX:-OptionName) 禁用。
使用環(huán)境劃分
1.系統(tǒng)屬性
java -D:設(shè)置屬性值 java -D屬性名 = 屬性值 比如:java -Dfile.encoding=utf-8

2.運(yùn)行模式
java ?-server 選擇虛擬機(jī)模式,默認(rèn)是“server” java虛擬機(jī)在啟動應(yīng)用時(shí),啟動器會對虛擬機(jī)模式進(jìn)行檢測,檢測應(yīng)用是否在服務(wù)器上的機(jī)器運(yùn)行,如果是,那就以服務(wù)器的模式運(yùn)行,目的是提高性能。
java虛擬機(jī)分為客戶端模式和服務(wù)器模式,客戶端模式下默認(rèn)-Xms是1M,-Xmx是64M,適用于占用內(nèi)存小,啟動更快的產(chǎn)品,而服務(wù)端模式默認(rèn)-Xms是128M,-Xmx是1024M,啟動慢,但運(yùn)行時(shí)性能和內(nèi)存管理效率高,適用于生產(chǎn)環(huán)境。
java ? -Xmixed ? ? ? ? ? 混合模式執(zhí)行 (默認(rèn))
java -Xint ? ? ? ? ? ? 僅解釋模式執(zhí)行
3.堆內(nèi)存設(shè)置
-Xms 設(shè)置初始 Java 堆大小
-Xmx 設(shè)置最大 Java 堆大小
-Xss 設(shè)置 Java 線程堆棧大小
-Xms 設(shè)置初始 Java 堆大小
-Xmx 設(shè)置最大 Java 堆大小
-Xmn 設(shè)置最大java年輕代堆大小
復(fù)制代碼 4.GC設(shè)置
-XX:+UseParallelGC
-XX:+UseParallelOldGC
-XX:+UseParNewGC
-XX:+UseSerialGC
-XX:+UseParallelGC
-XX:+UseConcMarkSweepGC
-XX:+UseG1GC
5.分析診斷
-XX:+HeapDumpOnOutOfMemoryError:異常堆的快照,默認(rèn)關(guān)閉,示例:-XX:+HeapDumpOnOutOfMemoryError -Xmx 256m 再指定個(gè)文件名
-XX:HeapDumpPath=path與上面的配合使用,指定轉(zhuǎn)存文件目錄,示例:-XX:HeapDumpPath=C:/log/java/java_heapdump.log
-XX:OnError=string,當(dāng)錯(cuò)誤發(fā)生的時(shí)候運(yùn)行的命令,%p代表當(dāng)前進(jìn)程示例:- ? -XX:OnError="userdump.exe %p"
-XX:OnOutOfMemoryError=string 與上面一樣。
6.JavaAgent
-javaagent:[=<選項(xiàng)>]
加載 Java 編程語言代理, 請參閱 java.lang.instrument 作者:CocaCoder
鏈接:https://juejin.cn/post/7026914067805634574
來源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
