/ / Java Garbage Collection, klassenbasiertes Tenuring - Java, Garbage Collection, Latenz

Java Garbage Collection, klassenbasiertes Tenuring - Java, Müllsammlung, Latenz

Ich habe mit den Parametern von gespieltJava Garbage Collector, und ich sehe teure und häufige kleinere Garbage Collections, wenn sich der Speicherplatz für Eden- / Survivor-Objekte füllt. Dies ist darauf zurückzuführen, dass ich einen Pool sehr großer Objekte zugeteilt habe Ich versuche daher, einen Weg zu finden, Objekte dieser Art "automatisch" in der alten und nicht in der neuen Generation zu platzieren.

Ich gehe derzeit um dieses Problem herum, indem ich eine sehr große neue Generation zuordnete (um die sehr häufigen geringfügigen GCs zu vermeiden), was leider bedeutet, dass jede einzelne Sammlung teurer ist.

Ich möchte angeben können, pro Klasse, aTenure Rate, und legen Sie sie für die spezifischen Klassen von Objekten, von denen ich weiß, dass sie niemals gecodet werden (und die sehr sehr groß sind), als sehr niedrig fest. (in seinem Fall geht es um

Meine Anwendung ist sehr latenzempfindlich.

Meine aktuelle Konfiguration verwendet CMS mit einer minimalen / maximalen Heap-Größe von 48.

Ist das möglich? Ich habe alle möglichen JVM-Flags durchsucht und kann nichts in diesem Sinne finden. Ich kann keine Möglichkeit finden, dies mit einem benutzerdefinierten Klassenladeprogramm zu tun.

Antworten:

2 für die Antwort № 1

In Anbetracht von Hotspot gibt es kein solches Flag, mit dem Sie bestimmte Klasseninstanzen direkt im OldGen zuordnen können.

Wenn der Pool wirklich wiederverwendet und "permanent" ist, dann Siesollte nur während der Poolzuweisung häufig kleinere gcs bekommen. Sie müssen Ihre Anwendung über einen längeren Zeitraum ausführen und prüfen, ob der Pool tatsächlich in Betrieb war. Danach sollte kein geringfügiger GC mehr angezeigt werden, der durch die Poolnutzung verursacht wird.