Ist es möglich, eine minimale Größe eines Generation 0 Heap in .NET festzulegen?. NET-Generation 0 Heap-Größe
Ich habe eine folgende sistuation. Ich habe eine Funktion, die ca. 20-30 MB 1KB-Objekte zuweist, etwas damit macht, und beendet, wobei alle zugewiesenen Objekte als GC-ed übrig bleiben. Jetzt kann ich im Systemmonitor sehen, dass die Größe des Heapspeichers der Generation 0 5-6 MB beträgt, was nicht ausreicht, um alle benötigten 20-30 MB Objekte zu akzeptieren. Wenn ich mit dem Zuweisen anfange, beginnt gen0 GC irgendwann zu laufen, und da alle Objekte benötigt werden, fördert es sie zu einem gen1. Beim nächsten Start von GC werden diese Objekte in gen2 hochgestuft. Letztendlich landen etwa 15MB meiner Objekte im Gen2-Heap. Dies sind nach meiner Logik temporäre Objekte, die auf keinen Fall im gen2-Heap enden sollten. Ich glaube, das Problem liegt in der Größe der gen0 Heap-Größe. Aber ich bin mir nicht sicher. Ich weiß, dass es in Java eine Möglichkeit gibt, eine minimale Größe der Generationenhaufen festzulegen. Gibt es so einen Weg in .NET?
Objekte, die größer als 85K sind, können generell nicht erfasst werden, außer in Gen2. Wenn ein Verweis auf ein neues Objekt in einem Objekt gespeichert wird, das größer als 85K ist, wird das neue Objekt, bis die Referenz innerhalb des großen Objekts zerstört wird, auf Gen2 aufsteigen, bevor es für die Sammlung in Frage kommt, auch wenn das Objekt zuvor entwurzelt wird. – supercat