java命令行介紹

1.總述

java命令用來啟動一個java應用。有以下兩種用法:

java [options] mainClass [args...]

java [options] -jar jarfile [args...]

第一種從指定的java類開始啟動,第二種從可運行的jar開始啟動。java應用啟動的過程有三個步驟,首先啟動java運行時環境JRE,然后加載所需的類,最后調用類的main方法。

命令行的各部分含義如下:

options 由空格分隔的命令行選項,下一節詳細說明

mainClass 待啟動類包含包路徑的類全名,其中需要有main()方法

jarfile 待啟動的jar包的路徑名稱

args 傳給啟動類的main()方法的參數,用空格分開

2.命令行選項

java的命令行選項分為三類:

1.標準選項。jvm必須實現的選項,實現通用的功能,如檢查運行環境,檢查JRE的版本,設置類路徑等。

2.擴展選項。HotSpot虛擬機實現常用功能的選項,其他jvm不一定實現。此類選項前綴為:-x

3,高級選項。高級選項是開發者選項,不保證在所有的jvm上實現,并可能會改變。高級選項也可以分為如下四種類型:
1) 高級運行時選項:控制jvm運行時的行為
2) 高級維護性選項:支持收集系統信息和調試
3) 高級GC選項:控制jvm的垃圾收集行為
4) 高級JIT選項:控制jvm的及時編譯行為

3.標準選項

-version 打印版本信息然后退出,經常使用該參數來打印java的版本或者驗證java是否可用。

-Dproperty=value 設置系統屬性的值。其中屬性名不能含喲空白字符,屬性值如果含有空白字符,需要用引號括起來。如下:

-Dhello="hello world" 該值可以在java程序中用如下代碼獲取:

System.getProperty("hello")

-server -client 指定jvm的模式,client模式用于桌面應用,server模式用于服務端應用。jvm對兩種模式有相應的優化,client模式加載速度快,可以快速啟動,server模式加載速度較慢但運行起來快。

-agentlib:libname[=options] 加載指定的native代理庫。可以指定多個庫,用,分隔。

4.擴展選項

-Xmx size 指定堆的最大大小。如果指定2GB的最大堆,可用如下任意方式表示:
-Xmx2G -Xmx2048m -Xmx2097152K - Xmx2147483648
此外,該選項等效于 -XX:MaxHeapSize

-Xms size 指定堆的初始化的大小。對于server端的應用,建議將-Xmx-Xms設置為相同的值方可獲取更好的性能。如果不設置該值,那么該值默認就為新生代和老年代的大小的和。

-Xmn size 指定堆中新生代的初始化的值。官方建議將該值設置為堆的最大值的25%-50%區間內。

-Xss size 指定線程棧的大小。該選項的默認值隨操作系統的不同而不同。linux環境下默認為1m,windows環境下取決于虛擬內存的大小。該選項等效于 -XX:XX:ThreadStackSize

5.高級運行時選項

-XX:MaxHeapSize=size 設置最大堆大小,見-Xmx

-XX:InitialHeapSize=size 設置初始堆大小,見-Xms

-XX:NewSize 設置新生代初始大小,見-Xmn

-XX:ThreadStackSize=size 設置線程棧大小,見-Xss

-XX:MaxMetaspaceSize=size 設置永久代大小,JDK8以下使用-XX:MaxPermSize=size

-XX:MaxDirectMemorySize=size 設置Java Nio可以使用的最大直接內存。默認情況下,該選項值為0,JVM將會自主確定一個大小值。

6.高級維護性選項

-XX:+HeapDumpOnOutOfMemoryError 開啟堆轉儲功能。當Java應用拋出OutOfMemoryError異常時可以使用堆轉儲工具(HPROF)將Java堆存儲到文件中。默認文件存儲在當前路徑下,文件名為java_pid[pid].hprof。此外,還可使用選項-XX:HeapDumpPath=path指定文件地址。一個示例如下(其中%p表示進程PID):
-XX:HeapDumpPath=/data/log/java_pid%p.hprof

-XX:LogFile=path 設置日志文件的地址。默認情況下,文件被寫到當前目錄下,文件名為hotspot.log。一個示例如下:
-XX:LogFile=/data/log/hotspot.log

-XX:OnOutOfMemoryError=string 設置發生OutOfMemoryError后執行的處理命令,多個命令可使用分號;分隔。如果命令中含有空格,需要使用雙引號"包裹命令。

本文只是列出了java命令行的部分命令,更詳細的信息可參考官網介紹
java命令行指南

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.總述 java命令用來啟動一個JAVA應用。有以下兩種用法: 第一種從指定JAVA類啟動,第二種從可運行jar...
    Hypercube閱讀 11,037評論 2 12
  • 緊接前一文JAVA命令行工具(一)--JAVA,垃圾回收由于有較多選項,所以單獨成篇,關于選項的通用描述可參見前文...
    Hypercube閱讀 3,159評論 1 1
  • Java 虛擬機有自己完善的硬件架構, 如處理器、堆棧、寄存器等,還具有相應的指令系統。JVM 屏蔽了與具體操作系...
    尹小凱閱讀 1,703評論 0 10
  • 好種子開花:我的師父送給我一份禮物。這份禮物是我一直都很喜歡的,價格很貴的東西。我還沒買呢。現在師父送給我了。我好...
    暖陽照耀閱讀 210評論 0 0
  • 菩薩蠻 ? 又逢花落時文/梧桐 綿綿柳絮鶯啼絕,絲絲細雨風聲歇。春色幾多留,翠華眉上愁。 一杯離別酒,...
    樂健君閱讀 4,400評論 35 224