Der Interviewer hat mich heute danach gefragt ... gibt es eine Antwort?
Der Interviewer hat mich heute danach gefragt ... gibt es eine Antwort?
Antworten:
System.GC.Collect()zwingt den Müllsammler zum Laufen. Dies wird nicht empfohlen, kann aber in Situationen verwendet werden.
Es wird nicht empfohlen, gc explizit aufzurufen, aber wenn Sie anrufen
GC.Collect();
GC.WaitForPendingFinalizers();
Es ruft GC explizit im gesamten Code, vergessen Sie nicht, rufen Sie GC.WaitForPendingFinalizers();nach GC.Collect().
WaitForPendingFinalizersDies führt nicht unbedingt zu einer "besseren Leistung": Es wird einfach blockiert, bis alle Objekte in der Finalisierungswarteschlange finalisiert wurden (Objekte, die möglicherweise durch Ihren vorherigen Aufruf an dort platziert wurden Collect). Wenn Sie eine Chance für diejenigen , wollen Objekte gesammelt werden , dann müssen Sie einen weiteren Anruf Collect nach Aufruf WaitForPendingFinalizers.
WaitForPendingFinalizers?
GC.Collect()
von MDSN ,
Verwenden Sie diese Methode, um zu versuchen, den gesamten Speicher zurückzugewinnen, auf den nicht zugegriffen werden kann.
Alle Objekte, unabhängig davon, wie lange sie sich im Speicher befinden, werden für die Sammlung berücksichtigt. Objekte, auf die im verwalteten Code verwiesen wird, werden jedoch nicht erfasst. Verwenden Sie diese Methode, um das System zu zwingen, die maximale Menge an verfügbarem Speicher zurückzugewinnen.
Beachten Sie jedoch, dass der Garbage Collector möglicherweise nicht immer das aufräumt, was Sie erwarten ...
Sie möchten den Garbage Collector nicht zum Ausführen zwingen.
Falls Sie dies jemals getan haben (natürlich als rein akademische Übung):
GC.Collect()
Ich denke, dass .Net Framework dies automatisch tut, aber nur für den Fall. Stellen Sie zunächst sicher, dass Sie auswählen, was Sie löschen möchten, und rufen Sie dann den Garbage Collector auf:
randomClass object1 = new randomClass
...
...
// Give a null value to the code you want to delete
object1 = null;
// Then call the garbage collector to erase what you gave the null value
GC.Collect();
Ich denke das ist es .. Hoffe ich helfe jemandem.