Estoy usando el perfilador de memoria ANTS de Red Gates para depurar una pérdida de memoria. Me sigue advirtiendo que:Qué causa la fragmentación de la memoria en .NET
La fragmentación de la memoria puede estar causando .NET para reservar demasiada memoria libre.
o
fragmentación de memoria está afectando al tamaño del objeto más grande que se puede asignar
Porque tengo TOC, este problema debe ser resuelto.
¿Cuáles son algunas prácticas de codificación estándar que ayudan a evitar la fragmentación de la memoria. ¿Se puede desfragmentar mediante algunos métodos .NET? ¿Ayudaría?
Sería bueno tener alguna información sobre el tipo de aplicación que es esto. La fragmentación de la memoria ocurriría si deja la memoria fija (o usa funciones de E/S que anclan almacenamientos intermedios de E/S entre bastidores), asignaciones de asignadores nativos (como el asignador de tareas COM) o crea muchos objetos grandes, porque el LOH no se compacta. El recolector de elementos no utilizados de .NET ya compacta las asignaciones dinámicas generacionales, lo que tiene un efecto secundario de desfragmentar el espacio libre. Si eso no está sucediendo, es porque algo impide que los objetos se muevan. –
* Como tengo TOC, este problema debe resolverse. * + 1 solo para este comentario. Aunque me gusta la pregunta, – BrokenGlass
Desinstale las herramientas que le molestan pero que no ofrecen ayuda para diagnosticar el problema.La fragmentación de la memoria es un hecho de la vida, no hay nada que puedas hacer para evitarlo que no sea drásticamente poco práctico. El asignador de montón de baja fragmentación ya es el predeterminado para Vista y superior. Solo es un problema si asigna más de la mitad del espacio de direcciones disponible de todos modos, los cerdos no vuelan. –