2

У меня проблема с утечкой памяти в Windows 10 уже около года, но я действительно хочу это исправить, поскольку она оказывает значительное влияние на мою работу.

Как видно из рисунка ниже, у меня 8 ГБ оперативной памяти. 92% из них используются, хотя приложения не превышают 1 ГБ.

В прошлом году я обновил 64-разрядную версию Windows 7 Pro до Windows 10.

Спросите более подробную информацию, я не знаю, что еще предоставить. Я в недоумении относительно того, что может быть причиной этого.

подробности

1 ответ1

9

1 большая часть вашего высокого использования памяти (2 ГБ) происходит из-за высокого использования таблицы страниц .

Чтобы увидеть, какие процессы используют его, установите Windows Performance Toolkit который является частью Windows 10 SDK, откройте командную строку от имени администратора и выполните эту команду:

wpr.exe -start ReferenceSet -filemode && timeout 5 && wpr.exe -stop C:\MemUsage.etl

Откройте MemUsage.etl с помощью Windows Performance Analyzer (WPA.exe), разверните запись в памяти

перетащите график ResidentSet из списка слева на панель анализа:

Теперь переместите столбец « Page Category в левую сторону и разверните запись в Page Table :

Здесь вы видите процессы, которые имеют высокий уровень использования таблиц. На правом сайте (после синей линии) вы видите использование памяти таблицей страниц в МБ для каждого процесса.

Также использование объединенного (не) выгружаемого пула составляет почти 2 ГБ.

Установите WDK, запустите poolmon (C:\Program Files (x86)\Windows Kits\10\Tools\x64\poolmon.exe), отсортируйте данные через P после типа пула, чтобы не выгружаемый / следующий раз выгружаемый был сверху и через B после байтов, чтобы увидеть тег, который использует большую часть памяти.

Теперь посмотрите, какой пул тегов использует больше всего памяти, как показано здесь:

Теперь откройте командную строку и запустите команду findstr. Для этого откройте командную строку и введите «cd C:\Windows\System32\drivers» без кавычек. Затем введите «findstr /s __ . », Где __ - тег (самое левое имя в poolmon). Сделайте это, чтобы увидеть, какой драйвер использует этот тег:

Теперь перейдите в папку драйверов (C:\Windows\System32\drivers) и щелкните правой кнопкой мыши нужный драйвер (intmsd.sys в приведенном выше примере изображения). Нажмите Свойства, перейдите на вкладку details чтобы найти название продукта. Ищите обновление для этого продукта.

Исправление обеих проблем может вернуть почти 4 ГБ.

На основе вашего скриншота на stackoverflow, 4 тега (VoSM, FILE, Ntfx и Proc), которые принадлежат функциям Windows.

Скопируйте / вставьте этот текст в новый текстовый файл и переименуйте его в PoolTagLeak.wprp

<?xml version="1.0" encoding="utf-8"?>
<WindowsPerformanceRecorder Version="1.0" Author="MagicAndre1981" Copyright="MagicAndre1981" Company="MagicAndre1981">
  <Profiles>
    <SystemCollector Id="SystemCollector" Name="NT Kernel Logger">
      <BufferSize Value="1024" />
      <Buffers Value="1024" />
    </SystemCollector>
    <SystemProvider Id="SystemProvider">
      <Keywords>
        <Keyword Value="Pool" />
      </Keywords>
      <Stacks>
        <Stack Value="PoolAllocation" />
        <Stack Value="PoolAllocationSession" />
      </Stacks>
      <PoolTags>
        <PoolTag Value="VoSM"/>
        <PoolTag Value="File"/>
        <PoolTag Value="Ntfx"/>
        <PoolTag Value="Proc"/>
      </PoolTags>
    </SystemProvider>
    <Profile Id="PoolUsage.Verbose.File" Name="PoolUsage" Description="Pool usage Tag 'Leak' " LoggingMode="File" DetailLevel="Verbose">
      <Collectors>
        <SystemCollectorId Value="SystemCollector">
          <SystemProviderId Value="SystemProvider" />
        </SystemCollectorId>
      </Collectors>
    </Profile>
    <Profile Id="PoolUsage.Verbose.Memory" Name="PoolUsage" Description="Pool usage Tag 'Leak'" Base="PoolUsage.Verbose.File" LoggingMode="Memory" DetailLevel="Verbose" />
  </Profiles>
</WindowsPerformanceRecorder>

Теперь запустите wpr.exe -start C:\PoolTagLeak.wprp && timeout 600 && wpr.exe -stop C:\PoolusageUsage.etl и попытайтесь воспроизвести рост использования.

Перетащите Pool Graph на панель анализа, упорядочите столбцы: Type , Pooltag , Stack .

Теперь перейдите к AIFO (расположен внутри, освобожден снаружи, так что это возможная утечка), найдите ваши 4 тега и разверните стек, чтобы увидеть, какие функции используют этот тег. На основании названий функций вы можете увидеть "причину". В моем деморолике, Thre тег (Thread) используются AVKCl.exe из G-Data , потому что он начинает много потоков. Ищите обновления драйверов / программ, чтобы исправить это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .