El entrevistador me preguntó sobre esto hoy ... ¿hay una respuesta?
El entrevistador me preguntó sobre esto hoy ... ¿hay una respuesta?
Respuestas:
System.GC.Collect()obliga al recolector de basura a funcionar. Esto no se recomienda, pero se puede usar si surgen situaciones.
No se recomienda llamar a gc explícitamente, pero si llama
GC.Collect();
GC.WaitForPendingFinalizers();
Llamará a GC explícitamente a través de su código, no olvide llamar GC.WaitForPendingFinalizers();después GC.Collect().
WaitForPendingFinalizersno necesariamente proporciona un "mejor rendimiento": simplemente bloquea hasta que todos los objetos en la cola de finalización hayan finalizado (objetos que podrían haber sido colocados allí por su llamada anterior a Collect). Si desea una oportunidad para que se recopilen esos objetos, necesita otra llamada Collect después de llamar WaitForPendingFinalizers.
WaitForPendingFinalizers?
GC.Collect()
de MDSN ,
Use este método para intentar recuperar toda la memoria inaccesible.
Todos los objetos, independientemente de cuánto tiempo hayan estado en la memoria, se consideran para la colección; sin embargo, los objetos a los que se hace referencia en el código administrado no se recopilan. Use este método para forzar al sistema a intentar recuperar la cantidad máxima de memoria disponible.
Sin embargo, tenga en cuenta que el recolector de basura no siempre puede limpiar lo que espera ...
No desea forzar la ejecución del recolector de basura.
Sin embargo, si alguna vez lo hizo (como ejercicio puramente académico, por supuesto):
GC.Collect()
Creo que .Net Framework hace esto automáticamente pero por si acaso. Primero, asegúrese de seleccionar lo que desea borrar y luego llame al recolector de basura:
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();
Creo que eso es todo. Espero ayudar a alguien.