O entrevistador me perguntou sobre isso hoje ... há uma resposta?
O entrevistador me perguntou sobre isso hoje ... há uma resposta?
Respostas:
System.GC.Collect()força o coletor de lixo a ser executado. Isso não é recomendado, mas pode ser usado se houver situações.
Não é recomendável chamar explicitamente o gc, mas se você chamar
GC.Collect();
GC.WaitForPendingFinalizers();
Ele chamará o GC explicitamente em todo o seu código, não se esqueça de ligar GC.WaitForPendingFinalizers();depois GC.Collect().
WaitForPendingFinalizersnão necessariamente fornece "melhor desempenho": ele simplesmente bloqueia até que todos os objetos na fila de finalização tenham sido finalizados (objetos que podem ter sido colocados lá pela sua chamada anterior Collect). Se você quiser uma chance desses objetos serem coletados, precisará de outra chamada Collect após a chamada WaitForPendingFinalizers.
WaitForPendingFinalizers?
GC.Collect()
do MDSN ,
Use este método para tentar recuperar toda a memória inacessível.
Todos os objetos, independentemente de quanto tempo estão na memória, são considerados para coleta; no entanto, objetos referenciados no código gerenciado não são coletados. Use este método para forçar o sistema a tentar recuperar a quantidade máxima de memória disponível.
Lembre-se, no entanto, de que o Garbage Collector nem sempre pode limpar o que você espera ...
Você não deseja forçar o coletor de lixo a executar.
No entanto, se você já fez (como um exercício puramente acadêmico, é claro):
GC.Collect()
Eu acho que o .Net Framework faz isso automaticamente, mas apenas por precaução. Primeiro, certifique-se de selecionar o que deseja apagar e, em seguida, chame o coletor de lixo:
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();
Eu acho que é isso .. Espero ajudar alguém.