2012-06-17 11:40:44 +0000 2012-06-17 11:40:44 +0000
64
64

怎样才能发现是什么东西在吞噬我的系统内存?(不是SuperFetch)

如何诊断/发现内存相关的问题,如果任务管理器似乎没有正确的报告?

我一定是有内存泄漏或其他问题—我的12GB内存使用量是75%,但任务管理器的进程内存使用量列表没有加起来(是的,"显示所有用户的进程 “被选中)。它显示总共有118个进程。除了前5名之外,所有的进程都在50MB以下。

最高的进程是firefox,使用了2.6GB。Adobe Premiere在900MB。Plugin-container在300MB。Pale Moon,275 MB。Explorer.exe为94MB。

我怎么才能找到占用我剩余的内存?好像任务管理器并没有看到所有正在使用的东西。也许是内存泄露了?或者是程序没有正确释放使用过的内存?

资源监控报告(点击查看大图):

注意:

  1. 由于我的主硬盘是固态硬盘,所以我的系统上的SuperFetch功能被禁用了
  2. 而且我明白未使用的内存是 "浪费 "的原理,可以这么说。但是,当我看到我的内存使用量几乎用完了峰值的时候,就会阻止我运行/加载后续的程序(从我自己的担心出发),甚至会让我去执行任务,关闭很多程序(对减少内存使用量几乎没有什么效果,至少在短时间内是明显的)。当内存充满时,我讨厌看到SSD上的1GB页面文件扩展到我设置的6GB限制,而我却 "汗流浃背 "地知道我的 "可怜的 "SSD很可能会被Windows大量/粗暴地将其作为一个完整的内存条使用,因此我很讨厌。(在这一点上,我是否应该把页面文件硬封为静态的1GB?)

答案 (5)

60
60
60
2012-06-17 12:17:17 +0000

通常情况下,你可以通过像RamMap这样的工具来更好地了解是什么在占用你的内存。这就是当前实际使用的内存。关于free内存的指标通常会有误导性。这包括像任务管理器这样的Windows工具。

更多信息


我还想从你的问题中补充一些观点。

然而,当我看到自己的内存使用量几乎用到了峰值容量时,它阻止了我运行/加载后续程序(从我自己的担心出发),甚至让我在任务中关闭了许多程序(对减少内存使用量几乎没有什么效果,至少在短时间内是明显的)。但是,除非你遇到的问题是由于低内存的情况,否则你应该避免这种做法。操作系统应该在需要物理内存的时候处理这个任务,并将数据冲出到分页文件中。

有可能,你的做法也是使用了错误的指标。你要留意你的Commit Charge Process Explorer 术语)。

commit charge是所有使用过的内存之和。你可以在截图中看到,它也有一个限制。这个限制是我的物理内存的大小+我的寻呼文件的大小。

当内存满了,我讨厌看到SSD上的1GB的页面文件扩展到我设置的6GB限制,而我 “汗流浃背 "地知道我的 "可怜的 "SSD很可能会被Windows大量/粗暴地将其作为一个完整的内存条使用,所以我很可能会被磨成灰。(在这一点上,我是否应该把页面文件硬帽到1GB?)

在我看来,这里有几个问题。一般来说,应该坚决不建议对分页文件的大小设置限制。Mark Russinovich在我上面链接的视频中已经解释了这一点(比我说的要好得多)。

只有坏事才会产生。当Windows需要冲出超过6GB的数据到分页文件,但你把它限制在6GB时,Windows应该怎么做?*是个大问题。

让Windows来处理分页文件。我强烈建议你做的唯一一件事,就是把分页文件从你的SSD上移走。Tom Wijsman在他的博客文章最大限度地延长SSD的使用寿命中对此有很好的解释,我推荐你阅读。

2
2
2
2018-03-09 11:52:05 +0000

在我的案例中,内存占用率高的原因是由于我的HyperV虚拟机启用了动态内存设置。然后,我找到了一些文章解释说,Driver Locked的高内存占用率可能是由于HyperV动态内存的启用导致的,然后我就确认了这一点。

0
0
0
2015-02-19 07:39:14 +0000

RAMMap显示C:\Windows\SoftwareDistribution\DataStore\DataStore.edb映射的文件浪费了我宝贵的400Mb的内存。

0
0
0
2014-05-04 05:05:49 +0000

你可以试试Sysinternal的RAMMAP,但它显示内存使用情况的方式与任务管理器和资源管理器不同,因此帮助不大。它是内存中的 “正在使用 "部分的一部分(参见资源监视器)。文件缓存可以增长到一个非常大的大小,尤其是当计算机持续运行数小时时。随着时间的推移,程序的整体内存使用量会随着时间的推移而增加,这是文件缓存和内存泄漏的结果。有些程序的内存管理很糟糕。

减少内存占用的一个方法是减少进程的数量。(为什么有118个进程在运行?为什么你有多个Explorer.exe运行的实例?)

有一个程序可以帮助你定期减少内存的使用量,并定期崩溃文件缓存。PcWinTech’s CLEANMEM)。通过这种方式减少内存的使用,也可以减少甚至不需要Windows将数据写到swap文件(在你的SSD上)。因此,它可以延长SSD的使用寿命。减少内存使用量也可以让更多的 "待机 "内存可用,让Windows可以在待机内存中预装更多的文件,提高系统的速度。

0
0
0
2012-06-17 13:15:52 +0000

如果你看到快照没有显示所有的进程,而且显示的进程本身占用了5.8GB的内存。使用msconfig删除不必要的启动程序,同时增加虚拟内存(1.5倍于物理内存)。