Ich habe gelesen this article über virtuelle Maschine Garbage-Tuning, um den Java-Garbage-Collector besser zu verstehen. Jeder Speicherplatz hat einen virtuellen Heap-Speicherbereich, in den er hineinwachsen kann, da der benötigte Heap-Speicherplatz näher an die maximale Heap-Größe heranrückt. Dies kann in diesem Bild zu sehen: Java GC arrangement of generations http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/190244.gifSind Verhältnisse zwischen Leerzeichen/Generationen in der Java Heap-Konstante?
Sie das Verhältnis zwischen Young Generation einstellen und Alt (Tenured) Erzeugung mit den NewRatio Parametern, und das Verhältnis zwischen Eden Raum und Survivor Space mit dem SurvivorRatio Parameter.
Kürzlich wurde this question gefragt, wie die Standardverhältnisse für die Heap-Bereiche ermittelt werden können. Es besagt, dass Sie den PrintGCDetails Parameter verwenden und die Verhältnisse manuell berechnen sollten.
Meine Frage ist: Erhöht sich die Größe der verschiedenen Heap-Räume um das gleiche Verhältnis, so dass das Verhältnis zwischen ihnen beim Start während der gesamten Laufzeit der Anwendung konstant bleibt? Wenn beispielsweise "Generation" und "Old/Tenured Generation" ein Standard-NewRatio-Wert von 3 lautet, beträgt der anfängliche reservierte Heapspeicher 100 MB für Young und 300 MB für Old. Wenn mehr Speicherplatz für den alten Speicherplatz reserviert werden muss, sagen wir 300 MB mehr, also insgesamt 600 MB. Speichert sich der für Young Space reservierte Speicher ebenfalls auf 200 MB, wobei das Verhältnis intakt bleibt?
Gute Antwort, erklärt einige Konzepte, von denen ich vorher nicht wusste. – ghdalum