Obwohl ich die schwerwiegenden Auswirkungen des Spielens mit dieser Funktion verstehe (oder zumindest denke ich das), verstehe ich nicht, warum es zu einem dieser Dinge wird, die seriöse Programmierer niemals verwenden würden, selbst diejenigen, die es nicht einmal wissen Wofür ist es.
Angenommen, ich entwickle eine Anwendung, bei der die Speichernutzung je nach Benutzer stark variiert. Der Anwendungslebenszyklus kann in zwei Hauptphasen unterteilt werden: Bearbeitung und Echtzeitverarbeitung. Angenommen, während der Bearbeitungsphase werden Milliarden oder sogar Billionen von Objekten erstellt. Einige von ihnen sind klein und einige nicht, andere haben möglicherweise Finalisierer und andere nicht und nehmen an, dass ihre Lebensdauer von wenigen Millisekunden bis zu langen Stunden variiert. Als nächstes beschließt der Benutzer, zur Echtzeitstufe zu wechseln. Nehmen wir an dieser Stelle an, dass die Leistung eine grundlegende Rolle spielt und die geringste Änderung des Programmflusses katastrophale Folgen haben könnte. Die Objekterstellung wird dann durch die Verwendung von Objektpools und dergleichen auf ein Minimum reduziert. Dann mischt sich der GC unerwartet ein und wirft alles weg, und jemand stirbt.
Die Frage: In diesem Fall wäre es nicht ratsam, GC.Collect () aufzurufen, bevor Sie die zweite Stufe betreten?
Schließlich überschneiden sich diese beiden Phasen nie zeitlich miteinander, und alle Optimierungen und Statistiken, die der GC hätte sammeln können, wären hier von geringem Nutzen ...
Hinweis: Wie einige von Ihnen bereits betont haben, ist .NET möglicherweise nicht die beste Plattform für eine solche Anwendung, aber das geht über den Rahmen dieser Frage hinaus. Damit soll geklärt werden, ob ein Aufruf von GC.Collect () das allgemeine Verhalten / die Leistung einer Anwendung verbessern kann oder nicht. Wir sind uns alle einig, dass die Umstände, unter denen Sie so etwas tun würden, äußerst selten sind, aber andererseits versucht der GC zu raten und macht es die meiste Zeit perfekt, aber es geht immer noch darum, zu raten.
Vielen Dank.