Winforms / WPF Частные байты Утечка памяти?
Я использую Visual Studio 2008 для работы над проектом Winform / WPF.
Он использует несколько проектов и классов, чтобы превратить его в рабочий продукт.
Моя проблема в том, что мы заметили, что в использовании памяти наблюдается утечка 4-8 Кбит / с. Конечно, это небольшая утечка, но она безостановочно непрерывна 4-8k. Наше приложение работает в течение ночи и даже в течение нескольких дней. Когда эти несколько дней наступают сами по себе, эта вещь израсходовала больше памяти, чем может выдержать компьютер (обычно 2-3 гигабайта), и принудительный перезапуск на ПК - единственное решение. Эта утечка происходит даже тогда, когда ничего не происходит, кроме сетевого взаимодействия с нашим хостом.
После дальнейшего анализа проекта с помощью ANTS Memory Profiler мы обнаружили, что данные в частных байтах постоянно растут. Есть ли способ сказать, откуда эти личные данные создаются? У меня не было большой удачи, разыскивая это с ANTS Шаги очень помогли бы!
Изображение личных байтов увеличивается (~45 минут):
Изображение Линии Времени (~45 минут):
Заранее спасибо!
1 ответ
Если частные байты продолжают увеличиваться, это означает, что у вас есть утечка памяти. Попробуйте DebugDiag, он от MS и бесплатный, также очень хороший инструмент для отслеживания утечки памяти в Windows.
Использовать этот инструмент просто: сначала вы создаете правило для мониторинга вашего процесса с помощью коллекции DebugDiag, оно создает дамп памяти в соответствии с вашим правилом, вы можете создать дамп памяти вручную. Затем вы можете использовать Анализ DebugDiag для анализа дампа, пожалуйста, установите правильный путь к символу перед анализом.
Эта статья MSDN " Определить и предотвратить утечки памяти в управляемом коде" тоже может помочь. В этой статье рассказывается, как определить, является ли утечка памяти нативной или управляемой. Если это чисто утечка управления.NET, вы также можете использовать CLR Profiler для устранения проблемы.