Avoiding-Promotion in Java CMS GC fehlgeschlagen

Ich habe eine Java-Anwendung, die eine CMS-Garbage-Collection verwendet, die mehrmals täglich einen vollständigen GC "ParNew (Promotion fehlgeschlagen)" aufweist (siehe unten für ein Beispiel). Ich verstehe, dass ein Heraufstufungsfehler auftritt, wenn die Garbage Collection nicht genügend (zusammenhängenden) Speicherplatz in der alten Generation finden kann, in den ein Objekt aus der neuen Generation heraufgestuft werden kann. Zu diesem Zeitpunkt ist es gezwungen, einen teuren Stop-the-World-Full-GC durchzuführen. Ich möchte solche Ereignisse vermeiden.

Ich habe mehrere Artikel gelesen, die mögliche Lösungen vorschlagen, aber ich wollte sie hier klären / konsolidieren:

-Xmx: Erhöht die Größe des Heapspeichers, z. 2G bis 4G - einfache Lösung für mehr Headroom in der alten Generation - scheint meiner Erfahrung nach ziemlich gut zu funktionieren -XX: NewRatio: NewRatio erhöhen, z. von 2 auf 4, um die alte Generation zu vergrößern / die neue Generation zu verkleinern - der alten Generation mehr Platz zu geben - scheint von meinen bisherigen Experimenten nicht viel, wenn überhaupt, zu bewirken -XX: PromotedPadding: Erhöhen Sie die Anzahl der bereitgestellten Auffüllungen, um Fehler bei der Heraufstufung zu vermeiden. Ich kann jedoch keine Vorschläge dazu finden, welche Werte für diesen Parameter angegeben werden sollen versuchen -XX: CMSInitiatingOccupancyFraction -XX: + UseCMSInitiatingOccupancyOnly: Lassen Sie den CMS-Zyklus früher starten, um Platzmangel in der alten Generation zu vermeiden. Ich habe diese Lösung noch nicht ausprobiert. Welche Werte wären sinnvoll? Was ist die Standardeinstellung?Nicht sehr große Objekte auf dem Heap zuweisen: Ein sehr großes Objekt kann schwierig zu fördern sein, da es in der alten Generation eine große zusammenhängende Menge an freiem Speicherplatz benötigt - dies gilt meines Wissens nicht für meine Anwendung

Wenn es relevant ist, hier sind meine aktuellen GC-Optionen und ein Beispiel von Protokollen, die einem Ereignis mit fehlgeschlagener Promotion vorangehen.

-Xmx4g -XX:+UseConcMarkSweepGC -XX:NewRatio=1

2014-12-19T09:38:34.304+0100: [GC (Allocation Failure) [ParNew: 1887488K->209664K(1887488K), 0.0685828 secs] 3115998K->1551788K(3984640K), 0.0690028 secs] [Times: user=0.50 sys=0.02, real=0.07 secs] 
2014-12-19T09:38:35.962+0100: [GC (Allocation Failure) [ParNew: 1887488K->208840K(1887488K), 0.0827565 secs] 3229612K->1687030K(3984640K), 0.0831611 secs] [Times: user=0.39 sys=0.03, real=0.08 secs] 
2014-12-19T09:38:39.975+0100: [GC (Allocation Failure) [ParNew: 1886664K->114108K(1887488K), 0.0442130 secs] 3364854K->1592298K(3984640K), 0.0446680 secs] [Times: user=0.31 sys=0.00, real=0.05 secs] 
2014-12-19T09:38:44.818+0100: [GC (Allocation Failure) [ParNew: 1791932K->167245K(1887488K), 0.0588917 secs] 3270122K->1645435K(3984640K), 0.0593308 secs] [Times: user=0.57 sys=0.00, real=0.06 secs] 
2014-12-19T09:38:49.239+0100: [GC (Allocation Failure) [ParNew (promotion failed): 1845069K->1819715K(1887488K), 0.4417916 secs][CMS: 1499941K->647982K(2097152K), 2.4203021 secs] 3323259K->647982K(3984640K), [Metaspace: 137778K->137778K(1177600K)], 2.8626552 secs] [Times: user=3.46 sys=0.01, real=2.86 secs]