JVM默認參數介紹

你們都知道,jvm在啓動的時候,會執行默認的一些參數。通常狀況下,這些設置的默認參數應對一些日常的項目也夠用了。可是若是項目特別大了,須要增長一下堆內存的大小、或者是系統總是莫明的掛掉,想查看下gc日誌來排查一下錯誤的緣由,都須要我們手動設置這些參數。算法

各個參數介紹多線程

1.verbose:gcjvm

表示,啓動jvm的時候,輸出jvm裏面的gc信息。格式以下:spa

解讀 :Full GC 就表示執行了一次Full GC的操做,178K 和99K 就表示執行GC前內存容量和執行GC後的內存容量。1984K就表示內存總容量。後面那個是執行本次GC所消耗的時間,單位是秒。線程

2.-XX:+printGC翻譯

這個打印的GC信息跟上個同樣,就不作介紹了。日誌

3.-XX:+PrintGCDetailscdn

打印GC的詳細信息。格式以下:對象

解讀:new generation 就是堆內存裏面的新生代。total的意思就是一共的,因此後面跟的就是新生代一共的內存大小。used也就是使用了多少內存大小。0x開頭的那三個分別表明的是 底邊界,當前邊界,高邊界。也就是新生代這片內存的起始點,當前使用到的地方和最大的內存地點。blog

eden space 這個一般被翻譯成伊甸園區,是在新生代裏面的,一些建立的對象都會先被放進這裏。後面那個12288K就表示伊甸園區一共的內存大小,91% used,很明顯,表示已經使用了百分之多少。後面的那個0x跟上一行的解釋同樣。

from space 和to space 是倖存者的兩個區。也是屬於新生代的。他兩個區的大小必須是同樣的。由於新生代的GC採用的是複製算法,每次只會用到一個倖存區,當一個倖存區滿了的時候,把仍是活的對象複製到另個倖存區,上個直接清空。這樣作就不會產生內存碎片了。

tenured generation 就表示老年代。

compacting perm 表示永久代。因爲這兩個的格式跟前面我介紹的那個幾乎同樣,我就沒必要介紹了。

4.-XX:+PrintGCTimeStamps

打印GC發生的時間戳。格式以下:

289.556 : [GC [ PSYoungGen : 314113K -> 15937K ( 300928K )] 405513K -> 107901K ( 407680K ), 0.0178568 secs] [ Times : user= 0.06 sys= 0.00 , real= 0.01 secs]

293.271 : [GC [ PSYoungGen : 300865K -> 6577K ( 310720K )] 392829K -> 108873K ( 417472K ), 0.0176464 secs] [ Times : user= 0.06 sys= 0.00 , real= 0.01 secs]

解讀:289.556表示從jvm啓動到發生垃圾回收所經歷的的時間。GC表示這是新生代GC(Minor GC)。PSYoungGen表示新生代使用的是多線程垃圾回收器Parallel Scavenge。314113K->15937K(300928K)]這個跟上面那個GC格式同樣,只不過,這個是表示的是新生代,倖存者區。後面那個是整個堆的大小,GC前和GC後的狀況。Times這個顯而易見,表明GC的所消耗的時間,用戶垃圾回收的時間和系統消耗的時間和最終真實的消耗時間。

5.-X:loggc:log/gc.log

這個就表示,指定輸出gc.log的文件位置。(我這裏寫的log/gc.log就表示在當前log的目錄裏,把GC日誌寫到叫gc.log的文件裏。)

6.-XX:+PrintHeapAtGC

表示每次GC後,都打印堆的信息。(這個打印的基本格式跟上面第二條的基本相似,我也就不比多說了。)

7.-XX:+TraceClassLoading

監控類的加載。格式以下:

使用這個參數就能很清楚的看到那些類被加載的狀況了。

8.-XX:+PrintClassHistogram

跟蹤參數。這個按下Ctrl+Break後,就會打印一下信息:

–分別顯示:序號、實例數量、總大小、類型。

這裏面那個類型,B和C的其實就是byte和char類型。

9.-Xmx -Xms

這個就表示設置堆內存的最大值和最小值。這個設置了最大值和最小值後,jvm啓動後,並不會直接讓堆內存就擴大到指定的最大數值。而是會先開闢指定的最小堆內存,若是通過數次GC後,還不能,知足程序的運行,纔會逐漸的擴容堆的大小,但也不是直接擴大到最大內存。

10.-Xmn

設置新生代的內存大小。

11.-XX:NewRatio

新生代和老年代的比例。好比:1:4,就是新生代佔五分之一。

12.-XX:SurvivorRatio

設置兩個Survivor區和eden區的比例。好比:2:8 ,就是一個Survivor區佔十分之一。

13.-XX:+HeapDumpOnOutMemoryError

發生OOM時,導出堆的信息到文件。

14.-XX:+HeapDumpPath

表示,導出堆信息的文件路徑。

15.-XX:OnOutOfMemoryError

當系統產生OOM時,執行一個指定的腳本,這個腳本能夠是任意功能的。好比生成當前線程的dump文件,或者是發送郵件和重啓系統。

16.-XX:PermSize -XX:MaxPermSize

設置永久區的內存大小和最大值。永久區內存用光也會致使OOM的發生。

17.-Xss

設置棧的大小。棧都是每一個線程獨有一個,全部通常都是幾百k的大小。

note:只要無懼於嘗試,沒有人會完全失敗。

相關文章
相關標籤/搜索