1. verbose:gc
- 作用: 啓動 jvm 時,輸出 jvm 中的 gc 信息
- 格式:
[Full GC 178K->99K(1984K), 0.0253877 secs]
解讀 :
- Full GC 表示執行了一次 Full GC 操作
- 178K 和 99K 表示執行 GC 前內存容量和執行 GC 後的內存容量
- 1984K 表示內存總容量
- secs 表示執行本次 GC 所消耗的時間,單位:秒
2. -XX:+printGC
- 同
verbose:gc
3. -XX:+PrintGCDetails
- 作用:打印 GC 的詳細信息
- 格式:
–Heap – def new generation total 13824K, used 11223K [0x27e80000, 0x28d80000, 0x28d80000) – eden space 12288K, 91% used [0x27e80000, 0x28975f20, 0x28a80000) – from space 1536K, 0% used [0x28a80000, 0x28a80000, 0x28c00000) – to space 1536K, 0% used [0x28c00000, 0x28c00000, 0x28d80000) – tenured generation total 5120K, used 0K [0x28d80000, 0x29280000, 0x34680000) – the space 5120K, 0% used [0x28d80000, 0x28d80000, 0x28d80200, 0x29280000) – compacting perm gen total 12288K, used 142K [0x34680000, 0x35280000, 0x38680000) – the space 12288K, 1% used [0x34680000, 0x346a3a90, 0x346a3c00, 0x35280000) – ro space 10240K, 44% used [0x38680000, 0x38af73f0, 0x38af7400, 0x39080000) – rw space 12288K, 52% used [0x39080000, 0x396cdd28, 0x396cde00, 0x39c80000)
解讀:
new generation
: 堆內存裏面的新生代total
: 總共,所以後面表示新生代總內存大小used
: 使用了多少內存大小,分別是底邊界,當前邊界,高邊界
即:新生代這片內存的起始點,當前使用到的地方和最大的內存地點
eden space
: 新生代空間,創建的對象都會先被放進這裏,後面參數同上from space
與to space
:Servivor 區(倖存區)- 新生代的 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 Scavenge314113K->15937K(300928K)
表示新生代的倖存者區405513K->107901K(407680K)
表示整個堆的大小,GC 前後情況Times
代表 GC 的消耗時間,分別是用戶垃圾回收的時間、系統消耗的時間、最終真實的消耗時間
5. -X:loggc:log/gc.log
- 作用: 指定輸出 gc.log 的文件位置
6. -XX:+PrintHeapAtGC
- 作用: 表示每次 GC 後,都打印堆的信息
- 格式: 同 verbose:gc
7. -XX:+TraceClassLoading
- 作用: 監控類的加載
- 格式:
•[Loaded java.lang.Object from shared objects file] •[Loaded java.io.Serializable from shared objects file] •[Loaded java.lang.Comparable from shared objects file] •[Loaded java.lang.CharSequence from shared objects file] •[Loaded java.lang.String from shared objects file] •[Loaded java.lang.reflect.GenericDeclaration from shared objects file] •[Loaded java.lang.reflect.Type from shared objects file]
8. -XX:+PrintClassHistogram
- 作用: 跟蹤參數,按下
Ctrl+Break
後,就會打印以下信息num(序號) instances(實例數量) bytes(總大小) class name(類型) ---------------------------------------------- 1: 890617 470266000 [B (byte) 2: 890643 21375432 java.util.HashMap$Node 3: 890608 14249728 java.lang.Long 4: 13 8389712 [Ljava.util.HashMap$Node; 5: 2062 371680 [C (char) 6: 463 41904 java.lang.Class
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 時,執行一個指定的腳本
16. -XX:PermSize -XX:MaxPermSize
- 作用: 設置永久區的內存大小和最大值
- 注意: 永久區內存用光也會導致 OOM 的發生
17. -Xss
- 作用: 設置棧的大小