Was löst eine vollständige Speicherbereinigung in Java aus?
Frage ich mich, was sind genau die Situationen, die Auslöser der Vollständige Garbage Collection in Java.
Den offensichtlichen sind:
- Läuft aus der alten gen
- Läuft die perm gen
- Aufrufenden System.gc()
Was ist mit anderen Fällen, die Ursache full gc? Vor allem:
- Nicht genug freier Speicherplatz im Survivor-Raum zum kopieren von Objekten von Eden.
- Kleinere Sammlungen nicht in der Lage zu bewältigen mit der Zuteilung Anzahl der neuen Objekte (weiß nicht, wie, wenn).
Ich bin mit Sun Java 1.6 und mit Concurrent-Mark-Sweep und ParNew für die neue gen.
InformationsquelleAutor der Frage Paweł Krupiński | 2012-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich beobachtet eine situation, die Trigger eine full GC in Java-Hotspot-VM 1.6 64bit unter Ubuntu mithilfe von Concurrent Mark-Sweep:
Wenn -XX:PermSize-Wert nicht gleich -XX:MaxPermSize (z.B. kleiner ist), eine gelegentliche Full GC passiert, wenn die java-Bedürfnisse zu erweitern, die PermGen (obwohl es nicht nötig, mehr Speicher zuzuweisen, als MaxPermSize).
Also Einstellung -XX:PermSize und -XX:MaxPermSize das gleiche zu sein scheint wie eine gute Idee.
InformationsquelleAutor der Antwort Paweł Krupiński
Diese hängt stark von Ihren jvm-Optionen und die jvm, dass Sie bei der Verwendung.
Aus diesem Grund empfehle ich, dass Sie sich in dem Buch "Java Performance" bý John und Jagd.
InformationsquelleAutor der Antwort Oh Chin Boon