Утечка памяти в Windows Server 2012
У меня значение памяти не из пула около 3 ГБ из общих 6 ГБ на Windows Server 2012. Я думаю, что это утечка памяти, см. Экраны
Bamboo использует Microsoft Visual Studio 2013 для создания проекта и запуска тестов.
- Как определить плохой процесс?
- И как решить проблему? Может быть, можно устранить эту утечку?
1 ответ
У вас есть утечка памяти, вызванная драйвером, а не приложением. Посмотрите на высокое значение памяти невыгружаемого ядра. В вашем случае это 2,7 ГБ. Вы можете использовать poolmon, чтобы увидеть, какой драйвер вызывает высокую загрузку.
Установите Windows WDK, запустите poolmon, отсортируйте его через P после типа пула, чтобы не выгружаемый был сверху, и через B после байтов, чтобы увидеть тег, который использует больше всего памяти. Запустите poolmon, перейдя в папку, где установлен WDK, перейдите в Инструменты (или C:\Program Files (x86)\Windows Kits\8.1\Tools\x64) и нажмите poolmon.exe.
Теперь посмотрите, какой тэг пула использует больше всего памяти, как показано здесь:
Теперь откройте командную строку и запустите команду findstr. Для этого откройте командную строку cmd и введите "cd C:\Windows\System32\drivers", чтобы перейти в каталог драйверов без кавычек. Затем введите findstr /s __ *.*
, где __
это тег, который вы видите в poolmon.
После этого, чтобы увидеть, какой драйвер использует этот тег:
Теперь перейдите в папку драйверов (C:\Windows\System32\drivers) и щелкните правой кнопкой мыши нужный драйвер (intmsd.sys
в приведенном выше примере изображения). Нажмите Свойства, перейдите на вкладку сведений, чтобы найти название продукта. Ищите обновление для этого продукта.
Если вы не можете найти драйвер для тега пула, посмотрите файл pooltag.txt, если тег используется драйвером Windows.
Если вы найдете этот тег в файле pooltag.txt, вам нужно отразить увеличение использования пула с помощью xperf. Во-первых, вам нужно установить Windows Performance Toolkit. Затем откройте приглашение cmd (cmd.exe) от имени администратора и выполните следующее:
xperf -on BASE + Pool -stackwalk PoolAlloc + PoolFree -buffersize 2048 -MaxFile 1024 -FileMode Circular && timeout -1 && xperf -d C: \ trace_pool_alloc.etl
Теперь откройте его в WPA.exe, загрузите символы отладки и найдите тег, который вы видели в poomon под AIFO
(выделяется insde освобождается снаружи) и расходуется стек. Из названий функций вы можете иметь представление о том, что происходит.
В этом примере FILE
Использование тегов происходит от инструмента под названием locate32, который сканирует жесткий диск для создания поискового индекса.