Анализ журналов GC для улучшения использования кучи загрузочного приложения Spring - PullRequest
0 голосов
/ 08 апреля 2019

Я новичок в анализе дампа кучи и сбора мусора. Я запустил наше загрузочное приложение Spring со следующей конфигурацией:

-Xms512M -Xmx2048M -Xloggc:/Users/abhishek/Downloads/gc.log -XX:+PrintGCDetails

Во время работы нашего приложения некоторые API занимают значительно больше времени. Связанное использование кучи почти всегда становится значительно большим (более 1 ГБ). В этом контексте я анализировал журналы gc, как показано ниже:

 3.044: [GC (Allocation Failure) [PSYoungGen: 131584K->8890K(153088K)] 131584K->8970K(502784K), 0.0082960 secs] [Times: user=0.02 sys=0.01, real=0.01 secs] 
 3.486: [GC (Allocation Failure) [PSYoungGen: 140474K->11490K(153088K)] 140554K->11578K(502784K), 0.0108238 secs] [Times: user=0.03 sys=0.01, real=0.01 secs] 
 3.580: [GC (Metadata GC Threshold) [PSYoungGen: 23024K->6560K(153088K)] 23112K->6656K(502784K), 0.0030034 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 
 3.583: [Full GC (Metadata GC Threshold) [PSYoungGen: 6560K->0K(153088K)] [ParOldGen: 96K->6388K(349696K)] 6656K->6388K(502784K), [Metaspace: 20795K->20795K(1067008K)], 0.0166229 secs] [Times: user=0.07 sys=0.00, real=0.01 secs] 
 4.405: [GC (Allocation Failure) [PSYoungGen: 131584K->9991K(244736K)] 137972K->16388K(594432K), 0.0080753 secs] [Times: user=0.03 sys=0.00, real=0.01 secs] 
 9.205: [GC (Metadata GC Threshold) [PSYoungGen: 119396K->9661K(273408K)] 125793K->16066K(623104K), 0.0073193 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 
 9.213: [Full GC (Metadata GC Threshold) [PSYoungGen: 9661K->0K(273408K)] [ParOldGen: 6404K->14261K(349696K)] 16066K->14261K(623104K), [Metaspace: 34435K->34435K(1079296K)], 0.0240039 secs] [Times: user=0.10 sys=0.01, real=0.02 secs] 
 10.421: [GC (Allocation Failure) [PSYoungGen: 251904K->12034K(418304K)] 266165K->26303K(768000K), 0.0151390 secs] [Times: user=0.07 sys=0.01, real=0.02 secs] 
16.123: [GC (Allocation Failure) [PSYoungGen: 418050K->13288K(419328K)] 432319K->44568K(769024K), 0.0257216 secs] [Times: user=0.10 sys=0.02, real=0.02 secs] 
17.608: [GC (Metadata GC Threshold) [PSYoungGen: 63567K->17498K(674304K)] 94847K->48786K(1024000K), 0.0117972 secs] [Times: user=0.05 sys=0.02, real=0.01 secs] 
17.620: [Full GC (Metadata GC Threshold) [PSYoungGen: 17498K->0K(674304K)] [ParOldGen: 31288K->29963K(349696K)] 48786K->29963K(1024000K), [Metaspace: 57298K->57298K(1099776K)], 0.1149197 secs] [Times: user=0.72 sys=0.00, real=0.12 secs] 
22.365: [GC (Allocation Failure) [PSYoungGen: 650752K->24035K(674816K)] 680715K->62966K(1024512K), 0.0323148 secs] [Times: user=0.18 sys=0.03, real=0.03 secs] 
31.300: [GC (Allocation Failure) [PSYoungGen: 674787K->24045K(644096K)] 713718K->81462K(993792K), 0.0279058 secs] [Times: user=0.18 sys=0.03, real=0.03 secs] 
33.492: [GC (Metadata GC Threshold) [PSYoungGen: 496599K->15972K(659456K)] 554015K->96870K(1009152K), 0.0217606 secs] [Times: user=0.16 sys=0.03, real=0.02 secs] 
33.514: [Full GC (Metadata GC Threshold) [PSYoungGen: 15972K->0K(659456K)] [ParOldGen: 80898K->75070K(421888K)] 96870K->75070K(1081344K), [Metaspace: 94672K->94567K(1134592K)], 0.1491159 secs] [Times: user=0.82 sys=0.00, real=0.15 secs] 

Я понятия не имею, в порядке ли частота второстепенных и мажорных сборщиков мусора, или мне нужно их убрать, т. Е. Учитывая журнал gc, могу ли я что-нибудь сделать для улучшения использования кучи здесь?

...