2010-12-10 6 views
21

Ich sehe GC Ausgabe wie folgt:ParNew GC wird die Welt stoppen?

2010-12-10T16:00:44.942+0800: 1443.562: [GC 1443.562: [ParNew: 201856K->17318K(201856K), 0.0352970 secs] 2113334K->1949037K(4416748K) icms_dc=0 , 0.0354310 secs] [Times: user=0.12 sys=0.00, real=0.04 secs] 
2010-12-10T16:00:46.207+0800: 1444.827: [GC 1444.827: [ParNew: 196774K->22400K(201856K), 0.0119290 secs] 2128493K->1954446K(4416748K) icms_dc=0 , 0.0120560 secs] [Times: user=0.13 sys=0.00, real=0.02 secs] 
2010-12-10T16:00:47.562+0800: 1446.182: [GC 1446.182: [ParNew: 201856K->22400K(201856K), 0.0714350 secs] 2133902K->1982695K(4416748K) icms_dc=0 , 0.0715720 secs] [Times: user=0.23 sys=0.01, real=0.07 secs] 
2010-12-10T16:00:48.545+0800: 1447.165: [GC 1447.165: [ParNew: 201856K->22400K(201856K), 0.1457230 secs] 2162151K->2008418K(4416748K) icms_dc=0 , 0.1458710 secs] [Times: user=0.71 sys=0.05, real=0.15 secs] 

Ich möchte wissen, ob ParNew GC alle Fäden stoppen. Vielen Dank.

+1

Aus Neugier, was JVM, welche GC-Einstellungen haben Sie verwendet? d. h. wer addiert die Zeitstempel und woher kommt icms_dc? – eckes

+2

Sie können diese Ausgabe mit Sun JVM v6 mit den folgenden Optionen erhalten: -XX: + UseConcMarkSweepGC -verbose: gc -XX: + PrintGCDetails -XX: + PrintGCDateStamps-Xloggc: PATH_TO_A_FILE –

Antwort

37

Jon Masamitsu's blog sagt so ganz klar

"ParNew" ist ein Stop-the-world, Kopieren Sammler, die Threads mehrere GC verwendet.

Im Beispiel Sie gezeigt haben, sind die Zeiten ziemlich schnell, obwohl

8

Ja, ParNew ist eine "Stop-the-world" Kollektion, die die junge Generation sammelt. Da die junge Generation normalerweise klein ist, sollte die Sammlung sehr schnell sein und sollte Ihre Anwendung nicht zu sehr beeinträchtigen.

2

Ja, es ist halt die Welt. In Ihrem Beispiel sehen Sie die Pause in den eckigen Klammern. Es ist normalerweise dasselbe wie die Echtzeit. Der Benutzer? Zeit ist die tatsächliche CPU-Zeit in GCing. Es kann viel größer als die Echtzeit sein, wenn die Parallelität verwendet wird. In Ihrem Fall sieht es aus wie 4 GC-Threads.

0

Ja, es stoppt, die Welt, obwohl abhängig von Ihrer Heap-Größe und Anwendung, sieht aus wie Sie eine größere newGen Größe verwenden können. Du machst jede Minute einen kleinen GC. Größere newGen-Größe bedeutet nicht unbedingt, dass Sie eine längere GC-Zeit haben. Obwohl der Vorteil ist, dass Sie keine Objekte bewerben, die dem alten Gen bald sterben werden. Wenn die Zeit für ein vollständiges gc kommt, werden Sie weniger Objekte zu entfernen haben, und weniger Ausfallzeiten.