Beeinflusst das Fixieren eines Objekts im LOH die GC-Leistung?

9

Ich habe gelesen, dass das Fixieren von Objekten im verwalteten Heap die GC-Leistung in .NET beeinflusst, da der GC den Speicher nicht komprimieren kann, wenn angeheftete Objekte "im Weg" sind. Aber da der große Objekt-Heap sowieso nicht komprimiert ist, sollte dies nicht für Objekte in der LOH gelten. Gibt es noch andere versteckte Kosten, um ein Objekt im LOH zu fixieren? Oder kann ich Objekte im LOH sicher anordnen, ohne die GC-Leistung zu beeinträchtigen?

    
Niki 19.08.2011, 12:25
quelle

1 Antwort

5

Nun, nur weil der Large Object Heap (LOH) nicht komprimiert ist, heißt das nicht, dass es nicht gesammelt ist. Die LOH wird gesammelt und ein Objekt wird angeheftet Verzweigung auf zukünftige Zuweisungen.

Da ein Objekt angeheftet ist, verkleinert es effektiv die Menge an Speicher, die in der LOH verfügbar ist (genauso, als ob Sie eine Referenz hätten). Wenn eine weitere Anforderung zum Zuweisen eines großen Objekts gestellt wird und zu viele angeheftete / gehaltene Referenzen in der LOH vorhanden sind, können Probleme auftreten, durch die größere Objekte zugewiesen werden.

Wenn eine Markierung während des Mark-and-Sweep-Teils der Garbage Collection erstellt wird, markiert die CLR wahrscheinlich alle Verweise, die als root angeheftet sind, so dass es wahrscheinlich keine Auswirkungen während dieses Teils der Sammlung gibt; Es würde sich genauso verhalten, wenn jemand einen Verweis auf das große Objekt hätte.

Da die Freigabe in der LOH auf die gleiche Weise erfolgt (der Block wird einfach als verfügbar gekennzeichnet), wird diese Operation ebenfalls nicht beeinflusst.

Und schließlich, da die LOH nicht komprimiert ist, findet diese Operation niemals während eines GC auf diesem Heap statt, so dass dies hier nicht betroffen ist.

Zusammenfassend lässt sich feststellen, dass Zuordnungen auf der LOH definitiv von Pinning-Verweisen auf Objekte auf der LOH beeinflusst werden, während Sammlungen auf der LOH höchstwahrscheinlich nicht vorhanden sind.

Obwohl wir nicht vergessen dürfen, dass das Zuweisen und Halten von großen Speicherblöcken Auswirkungen auf Systeme im Allgemeinen haben kann, sind diese Kommentare streng um die LOH .

    
casperOne 19.08.2011, 13:35
quelle

Tags und Links