¿Por qué la gente piensa que una pérdida de memoria en .NET no es lo mismo que cualquier otra pérdida?
Una pérdida de memoria es cuando se adjunta a un recurso y no lo deja ir. Puede hacer esto tanto en codificación administrada como no administrada.
Con respecto a .NET y otras herramientas de programación, ha habido ideas sobre la recolección de basura y otras formas de minimizar las situaciones que harán que su aplicación se filtre. Pero el mejor método para evitar pérdidas de memoria es que necesita comprender su modelo de memoria subyacente y cómo funcionan las cosas en la plataforma que está utilizando.
Creer que GC y otras magias limpiarán tu desorden es el camino corto hacia las pérdidas de memoria, y será difícil de encontrar más adelante.
Al codificar sin administrar, normalmente se asegura de limpiar, sabe que los recursos que toma, serán su responsabilidad de limpiar, no los del conserje.
En .NET, por otro lado, mucha gente piensa que el GC limpiará todo. Bueno, hace algo por ti, pero debes asegurarte de que sea así. .NET envuelve muchas cosas, por lo que no siempre sabe si está tratando con un recurso administrado o no administrado, y necesita asegurarse de con qué está tratando. El manejo de las fuentes, los recursos GDI, el directorio activo, las bases de datos, etc. es lo que generalmente debe tener en cuenta.
En términos manejados, pondré el cuello en la línea para decir que desaparece una vez que se elimina / elimina el proceso.
Sin embargo, veo que mucha gente tiene esto, y realmente espero que esto termine. ¡No puede pedirle al usuario que finalice su aplicación para limpiar su desorden! Eche un vistazo a un navegador, que puede ser IE, FF, etc., luego abra, por ejemplo, Google Reader, deje que permanezca durante algunos días y observe lo que sucede.
Si luego abre otra pestaña en el navegador, navega a algún sitio, luego cierra la pestaña que albergaba la otra página que hizo que el navegador se filtrara, ¿cree que el navegador liberará la memoria? No es así con IE. En mi computadora, IE consumirá fácilmente 1 GiB de memoria en un corto período de tiempo (aproximadamente 3-4 días) si uso Google Reader. Algunas páginas de noticias son aún peores.