Интервьюер спросил меня об этом сегодня ... есть ответ?
Интервьюер спросил меня об этом сегодня ... есть ответ?
Ответы:
System.GC.Collect()заставляет сборщик мусора бежать. Это не рекомендуется, но может быть использовано в случае возникновения ситуаций.
Не рекомендуется вызывать gc явно, но если вы звоните
GC.Collect();
GC.WaitForPendingFinalizers();
Он будет вызывать GC явно во всем вашем коде, не забудьте позвонить GC.WaitForPendingFinalizers();после GC.Collect().
WaitForPendingFinalizersне обязательно дает «лучшую производительность»: он просто блокируется, пока все объекты в очереди завершения не будут завершены (объекты, которые могли быть помещены туда при предыдущем вызове Collect). Если вы хотите, чтобы эти объекты были собраны, вам нужен еще один вызов Collect после вызова WaitForPendingFinalizers.
WaitForPendingFinalizers?
GC.Collect()
из МДСН ,
Используйте этот метод, чтобы попытаться восстановить всю память, которая недоступна.
Все объекты, независимо от того, как долго они были в памяти, рассматриваются для сбора; однако объекты, на которые есть ссылки в управляемом коде, не собираются. Используйте этот метод, чтобы заставить систему попытаться восстановить максимальный объем доступной памяти.
Имейте в виду, однако, что сборщик мусора не всегда может очистить то, что вы ожидаете ...
Вы не хотите принудительно запускать сборщик мусора.
Однако, если вы когда-либо делали (как чисто академическое упражнение, конечно):
GC.Collect()
Я думаю, что .Net Framework делает это автоматически, но на всякий случай. Сначала убедитесь, что вы выбрали то, что хотите удалить, а затем вызовите сборщик мусора:
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();
Я думаю, что это все .. Надеюсь, я помогу кому-то.