2010-09-14 8 views
5
Operation System: Red Hat Linux 4.8 

CPU Info: Intel(R) Xeon(R) CPU 5160 @ 3.00GHz X 16 

JDK version: "1.5.0_16" 

JVM Parameter: 
-server 
-Xmx1024m 
-Xms1024m 
-XX:NewSize=256m 
-XX:MaxNewSize=256m 
-XX:PermSize=128m 
-XX:MaxPermSize=128m 
-XX:SurvivorRatio=8 
-XX:+PrintGCDetails 
-XX:+PrintGCTimeStamps 
-XX:+UseConcMarkSweepGC 
-XX:+UseCMSCompactAtFullCollection 
-XX:CMSFullGCsBeforeCompaction=5 
-XX:CMSInitiatingOccupancyFraction=60 
-XX:CMSMaxAbortablePrecleanTime=5 
-XX:+CMSPermGenSweepingEnabled 
-XX:+CMSClassUnloadingEnabled 
-XX:MaxGCPauseMillis=1500 

JVM GC Log: 

945188.489: [GC 945188.489: [ParNew: 224543K->14968K(235968K), 0.0506680 secs] 552200K->344514K(1022400K), 0.0507700 secs] 

945242.102: [GC 945242.102: [ParNew: 224760K->15374K(235968K), 0.0632410 secs] 554306K->346710K(1022400K), 0.0633450 secs] 

945270.397: [GC 945270.402: [ParNew: 225163K->225163K(235968K), 0.0000230 secs]945270.402: [CMS (concurrent mode failure)[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor70] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor58] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor38] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor62] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor54] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor74] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor53] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor73] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor64] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor39] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor59] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor51] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor42] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor48] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor76] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor52] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor57] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor61] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor56] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor55] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor63] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor60] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor40] 
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor65] 
: 331336K->71676K(786432K), 13.8120660 secs] 556499K->71676K(1022400K), 13.8122360 secs] 

945289.234: [GC 945289.234: [ParNew: 209792K->2581K(235968K), 0.0065240 secs] 281468K->74257K(1022400K), 0.0066160 secs] 

945324.703: [GC 945324.703: [ParNew: 212373K->3829K(235968K), 0.0081040 secs] 284049K->75506K(1022400K), 0.0082040 secs] 

Warum passiert CMS (concurrent mode failure)?Warum ist CMS (Fehler im gleichzeitigen Modus) hier passiert?

Die alte Generation scheint: 331336K-> 71676K (786432K)

Antwort

9

Concurrent Mode Failure als

Die Meldung "concurrent Modus failure" definiert bedeutet, dass die gleichzeitige Sammlung der fest angestellten Generation nicht beendet, bevor die feste Generation voll wurde. Die neue Generation füllt sich also zu schnell, sie läuft über die gesamte Laufzeit hinaus, aber das CMS konnte die Dauergeneration im Hintergrund nicht löschen.

In Ihrem Fall bei 945270,397

ParNew: 225163K->225163K(235968K) zeigt das Junge war überhaupt voll und konnte nicht klar Objekte.

aktualisieren

Eine ähnliche log to yours is explained hier sagt

Dies zeigt, dass eine ParNew Sammlung angefordert wurde, aber wurde nicht versucht. (Der Grund dafür ist, dass es geschätzt wurde, dass es nicht genug Platz in der CMS Generation war den schlimmsten Fall überlebenden junge Generation Objekte zu fördern.) Wir haben dieses Versagen nennen „full Förderung Garantie failure“. Als Folge wird der gleichzeitige Modus von CMS unterbrochen und ein vollständiger GC wird aufgerufen.

So wie ich es sehe, eine vollständige GC auf den jungen Objekten von 225M sowie die Tenured von 331K dauert 13 Sekunden und erhält den Haufen bis zu 71 M, aber dies ist ein Ergebnis des gleichzeitigen Betriebes gewesen

Ausfall

Anregung

Wenn Sie wirklich so viele alte Objekte erstellt werden, dann müssen Sie wahrscheinlich einen größeren Haufen.

Oder reduzieren versuchen, die -XX reduzieren: CMSInitiatingOccupancyFraction von 60 aber nicht denken, dass

viel von einem diff machen
+0

Ihnen für Ihre Antwort danken. Meine Tenured haben 786432k (768m) Speicher zugewiesen. Wo siehst du 'das Alte ging von 330MB auf 716MB'? – user447044

+0

Ah ich habe die 71676K falsch als 716 M gezählt, es ist in der Tat 71 M. – JoseK

+0

331336K-> 71676K (786432K), Es bedeutet vor GC, Tenured haben 331336k verwendet, nach GC, Tenured haben 71676k.And mein Tenured verwendet habe 786432k zugewiesen. Also die Frage kam, 331336/786432 = 42% von Tenured wurde verwendet, aber warum CMS (concurrent mode failure) hier passiert? – user447044

Verwandte Themen