2012-05-31 32 views
6

He leído recientemente temas acerca de la fragmentación de memoria: How to solve Memory Fragmentation y What is memory fragmentation?herramientas para comprobar la fragmentación de memoria

Quiero ver algunos mapa de asignación de memoria como el autor de estos artículos http://pavlovdotnet.wordpress.com/2007/11/10/memory-fragmentation/

Podría recomendar algunas herramientas para obtener un mapa de asignación de memoria así, así podría ver si la memoria está fragmentada y cuál es el espacio libre más grande disponible.

Estoy en Windows, por lo que preferiría herramientas que trabajen en este sistema.

Respuesta

4

Here es una herramienta que visualiza la memoria del GC y el uso del montón, también se proporciona el código fuente. Otra aplicación similar está vinculada en los comentarios allí también.

Si necesita poder registrar el uso de la memoria para una solución .NET, puede consultar ANTS Memory Profiler, puede ejecutar junto con un proyecto en Visual Studio y controlar cómo los procesos y objetos están usando la memoria.

2

Hay una solución indirecta al problema. Tengo el desarrollo de la aplicación de servidor por algunos años. Inicialmente estamos haciendo la asignación bajo demanda y, como resultado, después de unas pocas semanas de ejecución, el rendimiento del servidor se redujo. Como solución, seguimos este enfoque:

Supongamos que tiene clases definidas por el usuario X, Y, Z, ... que debe asignar desde el almacenamiento dinámico en el tiempo de ejecución. Asigne n cantidad de objetos X al inicio. Pon todos estos objetos en la lista de grupo libre. A pedido, tome cada objeto de xy proporciónelo a su aplicación. Cuando esté en uso, colóquelo en la lista de grupos ocupados. Cuando la aplicación quiera liberarlo, vuelva a colocarlo en la lista de grupos libres. Siga esta estrategia para Y. Z etc.

Dado que está asignando todos los objetos necesarios al inicio y nunca los libera al gestor de memoria del sistema operativo hasta que el programa finalice, no enfrentará la degradación del rendimiento causada por la fragmentación de la memoria.

+0

mientras su solución alternativa es correcta, aquí hay una alternativa https://msdn.microsoft.com/en-us/library/windows/desktop/aa366750(v=vs.85).aspx – ComputerSaysNo

Cuestiones relacionadas