Вопрос по – Инструменты для проверки фрагментации памяти [закрыто]

6

Я недавно прочитал темы о фрагментации памяти: Как решить Фрагментацию памяти а такжеЧто такое фрагментация памяти?

Я хочу видеть некоторую карту распределения памяти, такую как автор в этой статьеhttp://pavlovdotnet.wordpress.com/2007/11/10/memory-fragmentation/

Не могли бы вы порекомендовать некоторые инструменты для получения такой карты распределения памяти, чтобы я мог видеть, фрагментирована ли память и какой объем свободного места больше всего.

Я нахожусь в Windows, поэтому я предпочел бы инструменты, работающие в этой системе.

Ваш Ответ

2   ответа
2

Существует косвенное решение проблемы. Я занимаюсь разработкой серверного приложения в течение нескольких лет. Первоначально мы выполняем распределение по требованию, и в результате после нескольких недель работы производительность сервера снижается. В качестве обходного пути мы следовали этому подходу -

Предположим, у вас есть пользовательские классы X, Y, Z, .., которые вам нужно выделить из кучи во время выполнения. Выделите n объектов X при запуске. Поместите все эти объекты в свободный список пула. По требованию возьмите каждый объект x и предоставьте его вашему приложению. При использовании поместите его в список занятых пулов. Когда приложение захочет выпустить его, верните его обратно в список свободных пулов. Следуйте этой стратегии для Y. Z и т. Д.

Поскольку вы выделяете все необходимые объекты при запуске и никогда не выпускаете обратно в диспетчер памяти ОС до тех пор, пока ваша программа не закроется, вы не столкнетесь с падением производительности, вызванным фрагментацией памяти.

Error: User Rate Limit Exceededmsdn.microsoft.com/en-us/library/windows/desktop/…
5

Вот это инструмент, который визуализирует использование памяти GC и кучи, также предоставляется исходный код. Еще одно похожее приложение также есть в комментариях.

Если вам нужно иметь возможность профилировать использование памяти для решения .NET, вы можете проверитьANTS Memory Profilerон может работать вместе с проектом в Visual Studio и следить за тем, как процессы и объекты используют память.

Похожие вопросы