jvm 參數(shù)配置 幾個必須知道的參數(shù)含義
說下我們生產(chǎn)配置,服務四個節(jié)點,單節(jié)點分配16g內(nèi)存
-Xms16g 初始化堆大小
-Xmx16g 最大堆內(nèi)存
-Xmn6gm 年輕代內(nèi)存大小
-Xss256k 每個線程的初始化內(nèi)存
-XX:MetaspaceSize=256m 元空間觸發(fā)gc的大小
-XX:+HeapDumpOnOutOfMemoryError 配置堆棧內(nèi)存溢出錯誤日志
-XX:HeapDumpPath=/opt/logs/micro-service/heapdump.hprof 錯誤日志輸出路徑
gc日志打印 時間 gc詳情 輸出路徑
-XX:+PrintGC 輸出GC日志
-XX:+PrintGCDetails 輸出GC的詳細日志
-XX:+PrintGCTimeStamps 輸出GC的時間戳(以基準時間的形式)
-XX:+PrintGCDateStamps 輸出GC的時間戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在進行GC的前后打印出堆的信息
-Xloggc:/opt/logs/service/gc_xx_xx_xx.log 日志文件的輸出路徑
如需了解更多請參考:
https://blog.csdn.net/iverson2010112228/article/details/82885976
常用命令
jmap -heap pid 查看堆內(nèi)存使用情況
jstat -gcutil pid 查看gc情況
S0: 新生代中Survivor space 0區(qū)已使用空間的百分比
S1:新生代中Survivor space 1區(qū)已使用空間的百分比
E: Eden已使用空間的百分比
O:Old已使用空間的百分比
M:metaspace使用百分比
CCS:類指針壓縮空間使用率 Compressed class space utilization as a percentage.
YGC:從應用程序啟動到當前,發(fā)生Yang GC 的次數(shù)
YGCT:從應用程序啟動到當前,Yang GC所用的時間【單位秒】
FGC:從應用程序啟動到當前吓揪,發(fā)生Full GC的次數(shù)
FGCT:從應用程序啟動到當前镣典,F(xiàn)ull GC所用的時間
GCT:從應用程序啟動到當前,用于垃圾回收的總時間【單位秒】
top -H -p pid 查看進程占用資源
jstack pid > xxx.txt 導出棧中信息
gc日志打印解釋
2019-10-25T11:37:03.856+0800: [GC (Allocation Failure) [PSYoungGen: 64512K->10721K(75264K)] 64512K->13593K(247296K), 0.0190788 secs] [Times: user=0.05 sys=0.00, real=0.02 secs]
2019-10-25T11:37:06.058+0800: [GC (Allocation Failure) [PSYoungGen: 75233K->10749K(75264K)] 78105K->23753K(247296K), 0.0161954 secs] [Times: user=0.05 sys=0.01, real=0.02 secs]
2019-10-25T11:37:06.211+0800: [GC (Metadata GC Threshold) [PSYoungGen: 20229K->10733K(75264K)] 33232K->23849K(247296K), 0.0071751 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
2019-10-25T11:37:06.218+0800: [Full GC (Metadata GC Threshold) [PSYoungGen: 10733K->0K(75264K)] [ParOldGen: 13115K->21510K(121344K)] 23849K->21510K(196608K), [Metaspace: 20164K->20159K(1067008K)], 0.0519726 secs] [Times: user=0.19 sys=0.01, real=0.05 secs]
2019-10-25T11:37:07.550+0800: [GC (Allocation Failure) [PSYoungGen: 64512K->3986K(107520K)] 86022K->25504K(228864K), 0.0067501 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
2019-10-25T11:37:08.570+0800: [GC (Metadata GC Threshold) [PSYoungGen: 87649K->8662K(133120K)] 109167K->30252K(254464K), 0.0093102 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
2019-10-25T11:37:08.579+0800: [Full GC (Metadata GC Threshold) [PSYoungGen: 8662K->0K(133120K)] [ParOldGen: 21590K->29605K(181760K)] 30252K->29605K(314880K), [Metaspace: 34167K->34167K(1079296K)], 0.0831839 secs] [Times: user=0.14 sys=0.00, real=0.08 secs]
2019-10-25T11:37:09.665+0800: [GC (Allocation Failure) [PSYoungGen: 122368K->7823K(186368K)] 151973K->37436K(368128K), 0.0082988 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
2019-10-25T11:37:10.429+0800: [GC (Allocation Failure) [PSYoungGen: 170639K->13400K(185344K)] 200252K->43021K(367104K), 0.0122756 secs] [Times: user=0.00 sys=0.03, real=0.01 secs]
2019-10-25T11:37:26.145+0800: [GC (Allocation Failure) [PSYoungGen: 176216K->22012K(236544K)] 205837K->51932K(418304K), 0.0194521 secs] [Times: user=0.01 sys=0.02, real=0.02 secs]
2019-10-25T11:37:27.130+0800: [GC (Allocation Failure) [PSYoungGen: 236540K->25589K(242176K)] 266460K->64567K(423936K), 0.0285009 secs] [Times: user=0.05 sys=0.02, real=0.03 secs]
2019-10-25T11:37:29.486+0800: [GC (Metadata GC Threshold) [PSYoungGen: 227175K->33256K(292864K)] 266153K->76296K(474624K), 0.0314799 secs] [Times: user=0.08 sys=0.00, real=0.03 secs]
2019-10-25T11:37:29.518+0800: [Full GC (Metadata GC Threshold) [PSYoungGen: 33256K->0K(292864K)] [ParOldGen: 43039K->62297K(261120K)] 76296K->62297K(553984K), [Metaspace: 57041K->57041K(1101824K)], 0.1802803 secs] [Times: user=0.48 sys=0.02, real=0.18 secs]
2019-10-25T11:37:30.735+0800: [GC (Allocation Failure) [PSYoungGen: 259584K->9377K(299008K)] 321881K->71683K(560128K), 0.0089734 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
2019-10-25T11:37:32.941+0800: [GC (Allocation Failure) [PSYoungGen: 268961K->19235K(356352K)] 331267K->81549K(617472K), 0.0231564 secs] [Times: user=0.03 sys=0.02, real=0.02 secs]
2019-10-25T11:37:35.511+0800: [GC (Allocation Failure) [PSYoungGen: 341283K->27219K(359424K)] 403597K->89557K(620544K), 0.0253650 secs] [Times: user=0.08 sys=0.00, real=0.03 secs]
2019-10-25T11:37:36.994+0800: [GC (Allocation Failure) [PSYoungGen: 349267K->31531K(433152K)] 411605K->93877K(694272K), 0.0348279 secs] [Times: user=0.06 sys=0.05, real=0.04 secs]
- 2019-10-25T11:37:03.856+0800
打印時間戳,按照年月日時分秒 - [GC (Allocation Failure)] / Full GC (Metadata GC Threshold)
本次gc原因,Allocation Failure 標識由于內(nèi)存大小不足而發(fā)生的gc
Metadata GC Threshold 標識元空間內(nèi)存不足,發(fā)生gc - [PSYoungGen: 64512K->10721K(75264K)] 64512K->13593K(247296K)
PSYoungGen :gc類型
64512K->10721K(75264K) 64512K->13593K(247296K)
前面一組:
64512K:PSYoungGen發(fā)生之前新生代內(nèi)存占用
10721K:PSYoungGen發(fā)生之后新生代內(nèi)存占用
75264K:新生代內(nèi)存占用總大小
后面一組:
64512K:PSYoungGen發(fā)生之前JVM堆內(nèi)存占用
10721K:PSYoungGen發(fā)生之后JVM堆內(nèi)存占用
75264K:JVM堆內(nèi)存占用總大小