如果任务管理器似乎没有正确报告,如何诊断/发现与内存相关的问题?
我肯定是出现了内存泄漏或者其他什么问题——我的 12 GB 内存的使用率是 75%,但是任务管理器列出的进程内存使用情况却不对(是的,已选中“显示所有用户的进程”)。
看起来这个“幻像”内存使用量随着系统运行时间的增加而增加。它显示总共有 118 个进程。除了前 5 个进程外,其他所有进程的内存使用量都在 50 MB 以下。
占用空间最大的进程是 Firefox,占用 2.6 GB。Adobe Premiere 占用 900 MB。插件容器占用 300 MB。Pale Moon 占用 275 MB。Explorer.exe 占用 94 MB。
我怎么才能找到哪些程序占用了剩余的内存?任务管理器似乎无法看到所有正在使用的内容。也许是存在某种内存泄漏?或者程序没有正确释放已使用的内存?
资源监视报告(点击查看大图):
笔记:
- 由于我的主操作系统驱动器是 SSD,因此我的系统上禁用 SuperFetch。
- 我理解未使用的内存就是“浪费”内存的原理。但是,当我看到内存使用量几乎达到峰值容量时,它会阻止我运行/加载后续程序(出于我自己的担忧),甚至会让我执行任务以关闭许多程序(这对减少内存使用量几乎没有什么效果,至少在短时间内没有明显的效果)。
- 当内存填满时,我讨厌看到 SSD 上的 1GB 页面文件扩展到我设置的 6GB 限制,并且我“紧张”地想到,随着 Windows 大量/猖獗地将其用作成熟的内存条,我的“可怜”SSD 可能会被磨成灰尘。(就这一点而言,我是否应该将页面文件硬限制为静态 1GB?)
答案1
通常,您可以使用以下工具更好地了解哪些内容占用了您的内存拉姆地图。
通常,为了提高性能,被拉入 RAM 的内存映射文件会耗尽内存。
注意积极的RamMap 中的列。这是当前实际正在使用的内存。有关自由的内存经常会产生误导。这包括任务管理器等 Windows 工具。
更多信息
我还想谈谈您问题中的一些其他观点。
但是,当我看到我的内存使用量几乎达到峰值容量时,它会阻止我运行/加载后续程序(出于我自己的担心),甚至会让我执行任务来关闭许多程序(对减少内存使用量几乎没有太大效果,至少在短时间内没有明显的效果)。
您的推理完全正确。但是,除非您遇到由于内存不足而导致的问题,否则您应该避免这种做法。操作系统应该处理此任务,并在需要物理内存时将数据刷新到分页文件中。
可能你也使用了错误的指标。你需要关注你的承诺收费(进程探索器术语)。
提交费用是所有已用内存的总和。您可以在屏幕截图中看到,它还有一个限制。该限制是我的物理内存大小 + 我的分页文件大小。如果达到该限制,那将是一个问题。
这引出了我们的下一个话题。
当内存填满时,我讨厌看到我的 SSD 上的 1GB 页面文件扩展到我设置的 6GB 限制,并且我“紧张”地想到我的“可怜”SSD 可能会被磨成灰尘,因为 Windows 大量/猖獗地将其用作成熟的内存条。(就这一点而言,我是否应该将页面文件硬限制为 1GB?)
在我看来,这里有几个问题。一般来说,强烈反对对分页文件的大小设置限制。Mark Russinovich 在我上面链接的视频中解释了这一点(比我解释得好多了)。
这只会导致糟糕的事情。当 Windows 需要将超过 6GB 的数据刷新到分页文件但您将其限制为 6GB 时,它应该做什么?那是一个重大问题。
让 Windows 处理页面文件。我强烈建议你做的唯一一件事就是将页面文件从 SSD 中移出。Tom Wijsman 在他的博客文章中对此进行了出色的解释最大程度延长 SSD 的使用寿命,我推荐你阅读一下。
答案2
就我而言,内存使用率高的原因是我为 hyper-v 虚拟机启用了 RAM 的动态内存设置。
拉姆地图该工具帮助我找到了根本原因。
首先,我注意到RamMap
Driver Locked 占用了超过29GB
我32GB
RAM 的内存。然后,我找到一些文章,解释了 Driver Locked 高内存使用率可能是由HyperV
启用动态内存引起的,然后我就证实了这一点。
答案3
RAMMap 显示C:\Windows\SoftwareDistribution\DataStore\DataStore.edb
映射文件浪费了我宝贵的 4 Gb RAM 中的 400 Mb。
此外,Windows Update 在更新该巨型文件的过程中不断减慢系统速度。
这可能是许多低端PC的常见问题。
看PC Boots 随后会写入巨大的 datastore.edb 文件,从而减慢计算机速度寻找可能的解决方案。
答案4
您可以尝试 Sysinternal 的 RAMMAP,但它显示内存使用情况的方式与任务管理器和资源管理器不同,因此没有太大帮助。
任务管理器和资源监视器不显示文件缓存及其大小。它是内存中“正在使用”部分的一部分(请参阅资源监视器)。文件缓存可能会增长到非常大的大小,尤其是当计算机连续运行数小时时。由于文件缓存和内存泄漏的增长,程序的整体内存使用量会随着时间的推移而增加。有些程序的内存管理实在是太差了。
最小化内存使用量的一种方法是减少进程数量。(为什么要运行 118 个进程?为什么要运行多个 Explorer.exe 实例?)
有一个程序可以帮助您定期减少内存使用量并定期压缩文件缓存。(PcWinTech 的 CLEANMEM)。以这种方式减少内存使用量还可以减少甚至消除 Windows 将数据从内存写入交换文件(在您的 SSD 上)的需要。因此,它可以延长 SSD 的使用寿命。减少内存使用量还可以提供更多“待机”内存,允许 Windows 在待机内存中预加载更多文件,从而加快系统速度。