Shy*_*Guy 4 memory memory-leaks windows-10
我在 Windows 10 上遇到内存泄漏问题大约一年了,但我现在真的很想解决这个问题,因为它对我的工作产生了相当大的影响。
从下图可以看出,我有 8GB 的内存。即使应用程序不超过 1GB,它的 92% 也在使用中。
我去年从 64 位 Windows 7 Pro 升级到了 Windows 10。
询问更多细节,我不知道还能提供什么。我不知道是什么原因造成的。
mag*_*981 10
1 很大一部分高内存使用量 (2GB) 来自高页表使用量。
要查看哪些进程使用它,安装Windows Performance Toolkit它是Windows 10 SDK的一部分,打开命令提示符作为管理员,运行以下命令:
wpr.exe -start ReferenceSet -filemode && timeout 5 && wpr.exe -stop C:\MemUsage.etl
Run Code Online (Sandbox Code Playgroud)
MemUsage.etl用Windows Performance Analyzer(WPA.exe)打开,展开内存项
将图形ResidentSet从左侧图形列表拖放到分析窗格中:
现在将Page Category列移动到左侧并展开Page Table条目:
在这里您可以看到具有高分页表使用率的进程。在右侧站点(在蓝线之后),您会看到每个进程的页表内存使用量(以 MB 为单位)。
此外,合并的(非)分页池使用量接近 2GB。
安装 WDK,运行poolmon( C:\Program Files (x86)\Windows Kits\10\Tools\x64\poolmon.exe),通过P后池类型对数据进行排序,以便非分页/下次分页在顶部,并通过B后字节查看使用最多内存的标签。
现在看看哪个 pooltag 使用的内存最多,如下所示:

现在打开一个 cmd 提示符并运行 findstr 命令。为此,请打开 cmd 提示符并键入“cd C:\Windows\System32\drivers”,不带引号。然后键入“findstr /s __ . ”,其中 __ 是标签(poolmon 中最左边的名称)。执行此操作以查看哪个驱动程序使用此标签:

现在,转到驱动程序文件夹 ( C:\Windows\System32\drivers) 并右键单击有问题的驱动程序(intmsd.sys在上图示例中)。单击属性,转到details选项卡以查找产品名称。寻找该产品的更新。
解决这两个问题可以恢复近 4GB。
根据您在 stackoverflow 上的屏幕截图,属于 Windows 功能的 4 个标签(VoSM、FILE、Ntfx 和 Proc)。
将此文本复制/粘贴到新的 txt 文件并将其重命名为 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>
Run Code Online (Sandbox Code Playgroud)
现在运行wpr.exe -start C:\PoolTagLeak.wprp && timeout 600 && wpr.exe -stop C:\PoolusageUsage.etl并尝试重现使用增长。
将 拖放Pool Graph到分析窗格,将列排序为Type、Pooltag、Stack。
现在转到 AIFO(内部分配,外部释放,因此这可能是泄漏),找到您的 4 个标签并展开堆栈以查看此标签使用哪些函数。根据函数的名称,您可以看到“原因”。在我的演示中,Thre标签 (Thread) 被 G-Data 的 AVKCl.exe 使用,因为它启动了很多线程。寻找驱动程序/程序更新来修复它。
| 归档时间: |
|
| 查看次数: |
3432 次 |
| 最近记录: |