Я использую java8u31
(оракул) с параметрами каротажных следующими GCPrintGCCause не предоставляет детали при использовании G1GC
-XX:GCLogFileSize=20971520 -XX:NumberOfGCLogFiles=5 -XX:+PrintGC
-XX:+PrintGCApplicationStoppedTime -XX:+PrintGCCause -XX:+PrintGCDateStamps
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:-PrintTenuringDistribution
-XX:+UseG1GC -XX:+UseGCLogFileRotation
МОИХ журналов GC выглядеть
2015-08-06T09:44:02.486-0400: 1085394.129: Total time for which application threads were stopped: 0.0003136 seconds
2015-08-06T09:44:02.638-0400: 1085394.281: [GC pause (G1 Evacuation Pause) (young), 0.0354571 secs]
[Parallel Time: 3.0 ms, GC Workers: 23]
[GC Worker Start (ms): Min: 1085394281.2, Avg: 1085394281.3, Max: 1085394281.5, Diff: 0.3]
[Ext Root Scanning (ms): Min: 0.4, Avg: 0.5, Max: 0.9, Diff: 0.6, Sum: 11.4]
[Update RS (ms): Min: 0.0, Avg: 0.2, Max: 0.4, Diff: 0.4, Sum: 4.7]
[Processed Buffers: Min: 0, Avg: 2.3, Max: 5, Diff: 5, Sum: 54]
[Scan RS (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 2.2]
[Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Object Copy (ms): Min: 1.7, Avg: 1.7, Max: 1.8, Diff: 0.1, Sum: 40.2]
[Termination (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.6]
[GC Worker Other (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 1.8]
[GC Worker Total (ms): Min: 2.5, Avg: 2.6, Max: 2.8, Diff: 0.3, Sum: 60.9]
[GC Worker End (ms): Min: 1085394283.9, Avg: 1085394284.0, Max: 1085394284.1, Diff: 0.2]
[Code Root Fixup: 0.1 ms]
[Code Root Migration: 0.1 ms]
[Code Root Purge: 0.0 ms]
[Clear CT: 0.4 ms]
[Other: 31.9 ms]
[Choose CSet: 0.0 ms]
[Ref Proc: 30.1 ms]
[Ref Enq: 0.1 ms]
[Redirty Cards: 0.0 ms]
[Free CSet: 0.7 ms]
[Eden: 610.0M(610.0M)->0.0B(606.0M) Survivors: 4096.0K->8192.0K Heap: 892.9M(1024.0M)->287.6M(1024.0M)]
[Times: user=0.10 sys=0.01, real=0.03 secs]
2015-08-06T09:44:02.673-0400: 1085394.317: Total time for which application threads were stopped: 0.0359503 seconds
2015-08-06T09:44:07.515-0400: 1085399.158: Total time for which application threads were stopped: 0.0002921 seconds
Это только отрывок, для любого GC Pause
(молодой или смешанный) Я не вижу, что вызвало GC. Когда я использую CMS
, он действительно обеспечивает причину GC, например. вот выдержка из приложения, которое использует CMS
2015-08-09T15:15:01.665-0400: 1364453.068: [Full GC (System.gc()) 1364453.068: [CMS: 44751K->44753K(537408K), 0.0816661 secs] 135985K->44753K(920832K), [Metaspace: 37944K->37944K(1083392K)], 0.0818386 secs] [Times: user=0.08 sys=0.00, real=0.08 secs]
Я понимаю это, но я вижу, что GCs происходят, когда приложение вообще не получает никаких запросов. Как показано в выдержке журнала из приложения, использующего 'CMS', он явно сообщает мне, что что-то вызывает' System.gc() ' – Pushkar
a) что заставляет вас думать, что не может быть никаких GC, когда нет запросов b), вы ничего не показывали, что указывает на то, что * должен * быть запущенной коллекцией System.gc(), которая так или иначе отсутствует.) В качестве примера вы указали только один цикл GC. Из этого трудно сделать какие-либо дальнейшие выводы. Вы думаете, что есть проблема, но вы на самом деле не показываете убедительных доказательств. – the8472
Мои мысли c) Да, у меня есть только выдержки из журналов GC, мои журналы GC размером 20 МБ не уверены, как это можно обеспечить. b) Отсутствие строки 'System.gc()' при переключении с CMS на G1GC заставляет меня думать, что G1GC не регистрирует эту информацию (это точно мой вопрос) a) Если мое приложение не получало никакого трафика на все в течение 10 часов, почему JVM входит в несколько GC в течение этих 10 часов? – Pushkar