Ich brauche Hilfe, einige Protokolle des HotSpot Serial Collector zu verstehen.Bedeutung einiger SerialCG Protokolle
Unten sind 5 verschiedene Protokolle von meiner JVM (1.8) produziert. Sie sind leicht aus Gründen der Lesbarkeit geschnitten, aber nichts Wichtiges wird entfernt.
1) [Full GC (Metadata GC Threshold)
[Tenured: 0K->20760K(2796224K), 0.0516809 secs]
290882K->20760K(4054528K),
[Metaspace: 20914K->20914K(1069056K)], 0.0518074 secs]
2) [GC (Allocation Failure)
[DefNew: 1118528K->35795K(1258304K), 0.0697424 secs]
1208983K->126251K(4054528K), 0.0698470 secs]
3) [GC (Allocation Failure)
[DefNew: 1167292K->1167292K(1258304K), 0.0000172 secs]
[Tenured: 2587705K->2093117K(2796224K), 3.4401746 secs]
3754997K->2093117K(4054528K),
[Metaspace: 241446K->241446K(1296384K)], 3.4450897 secs]
4) [GC (Allocation Failure) 417.013:
[DefNew (promotion failed) : 1234062K->1258304K(1258304K), 1.4832395 secs]
[Tenured: 2796224K->2275534K(2796224K), 4.1927802 secs]
3514367K->2275534K(4054528K),
[Metaspace: 226551K->226551K(1286144K)], 5.6762551 secs]
5) [Full GC (Allocation Failure)
[Tenured: 2796224K->2424825K(2796224K), 4.8644173 secs]
4054528K->2424825K(4054528K),
[Metaspace: 226537K->226537K(1286144K)], 4.8645662 secs]
Fragen:
Was im Protokoll ausgelöst Voll GC 1? Es sieht nicht so aus, als wäre Metaspace vollständig zugewiesen. Zur Information wurde der Server gestartet.
Das Protokoll 2 ist klar - Minor GC. Im Gegensatz zu [Full GC] wird [GC] verwendet. Aber was ist in Log 3 passiert? Es heißt nicht, dass es Full GC ist, aber die Old Generation wurde gelöscht. Zur gleichen Zeit ist das junge Gen unverändert. Soweit ich weiß, wird die alte Generation nur während Full GC gelöscht (wie in Log 5). Interessant, dass Java Mission Control dieses Ereignis als Full GC protokolliert hat.
Was bedeutet "Promotion fehlgeschlagen" im Log 4?
Ich würde jede Hilfe zu schätzen wissen. Ich frage mich, ob es ein offizielles Dokument gibt, das die GC Logs beschreibt (ich persönlich habe keine gefunden). Leider sind alle Artikel im Internet auf die beiden Standard-Protokolle beschränkt (wenn es um den seriellen GC geht).
Der Punkt über Förderung ist jetzt klar. Vielen Dank. Aber wie für die große GC. Was hat es in diesem Fall ausgelöst? Es waren immer noch etwa 200 MB in der alten Generation verfügbar. Defragmentierung? –
@AverageJoe möglicherweise. Große Objekte werden direkt im Dauerbereich zugewiesen. Wenn für eine große Zuweisung nicht genügend zusammenhängender Speicherplatz übrig ist, wird eine Sammlung ausgelöst. –