Ich bin nicht ganz sicher darüber, aber ich nehme an, dass der Garbage Collector, der alle Speicherpools steuert (zumindest die eine für Old Gen) ist die für große GC. zB: Ich habe eine JVM läuft mit diesen 2 Sammler:
- PS MarkSweep
- MemoryPoolNames: PS Eden Raum, PS Survivor Raum, PS Alt Gen, PS Perm Gen
- CollectionCount: 68
- PS Scavenge
- MemoryPoolNames: PS Eden Raum, PS Survivor Raum
- CollectionCount: 2690
diese Berücksichtigung würde ich sagen, ist PS Scavenge für kleinere gc und PS MarkSweep für großen gc verwendet.
UPDATE (basierend auf @ajeanson Kommentar, vielen Dank für Ihr Feedback btw):
effektiv, das Beispiel, das ich dort legte von den in dem MXBeans der JVM ausgesetzt Informationen genommen wurde war ich mit. Wie Sie bereits erwähnt haben, sind dies GC-Algorithmen, und der Name, den der MXBean für den GC verwendet, basiert auf dem Algorithmus, den der GC verwendet. Ich habe nach mehr Informationen darüber gesucht; in diesem Artikel http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html liest die folgenden:
Die Java HotSpot VM definiert zwei Generationen: Die junge Generation und die alte Generation (manchmal als "Kindergarten" genannt). Die junge Generation besteht aus einem "Eden Space" und zwei "Survivor Spaces". Die VM weist zunächst alle Objekte dem Eden-Space zu und die meisten Objekte sterben dort . Wenn die VM einen untergeordneten GC durchführt, verschiebt alle verbleibenden Objekte aus dem Eden-Raum in einen der Überlebendenbereiche. Die VM verschiebt Objekte , die lange genug in den Überlebenden Leerzeichen auf dem "tenured" Speicherplatz in der alten Generation leben. Wenn die generierte Generation voll ist, gibt es einen vollen GC, der oft viel langsamer ist, weil es alle Live-Objekte betrifft.Die permanente Generation enthält alle reflektierenden Daten der virtuellen Maschine selbst, z. B. Klasse und Methode Objekte.
einen Blick auf die collectionCount Eigenschaft nehmen an den MXBeans im Falle meiner „PS MarkSweep“ Sammler (die die alte Generation Pool verwaltet), scheint die Sammlung Zahl nur zu erhöhen, wenn ich eine vollständige GC erhalten in der ausführlichen Ausgabe. Ich könnte mich irren und vielleicht führt dieser Collector in einigen Fällen auch kleinere GCs durch, aber ich müsste mehr Tests durchführen, um ganz sicher zu sein. Bitte lassen Sie es mich wissen, wenn jemand etwas anderes herausfindet oder Sie genauere Informationen zu diesem Thema haben, da mich das ziemlich interessiert.
können Sie feststellen, dass die alte Gen-Nutzung vor/nach GC nur für volle GC abnimmt. Wenn dies bei Ihnen der Fall ist, reicht dies aus, um vollständige GCs zu identifizieren. – Ron
[Dies könnte Ihnen einen Einblick geben] (https://gist.github.com/khotyn/1520947), welcher GC-Typ auf Ihrer JVM aktiviert ist, wo Sie Ihren Code testen – KJ50