2014-03-11 02:46:08 +0000 2014-03-11 02:46:08 +0000
104
104

为什么Windows任务管理器报告的总内存使用量远远高于所有进程的内存使用量之和?

任务管理器显示我的总内存使用量为6GB总量的90%,但没有一个进程使用超过250MB内存,所有运行进程的内存使用量之和小于2GB。我已经试过了。

在Windows 8任务管理器的 “进程 "选项卡上看 "内存 "栏的数字。 -查看任务管理器 "详细信息 "选项卡上的 "工作集"、"私有工作集"、"共享工作集 "和 "提交大小 "列。 -在 "进程资源管理器 "中查看类似的内存相关列。 - 我已经尝试运行Sysinternals RAMMap,但当我遇到低内存危机时,它在启动时崩溃。一旦我解决了这个问题,RAMMap就能正常运行,但这时已经太晚了。

都显示使用了相当少的内存。

网上有很多人在问这个问题的变种,用的是不同版本的windows。他们中的一些人设法解决了他们的低内存问题,通常是通过重新安装软件;有时是通过从头开始重新安装windows。我在寻找一个答案,这些都是共同的一般性问题,似乎在其他地方从来没有得到过答案。

1.为什么总的使用内存比所有列出的进程使用的内存高得多? 2. 在不知道什么程序在使用内存的情况下,windows怎么会 "知道 "内存被使用了? 3. 哪些进程可能使用了内存但没有显示在列表中? 4. 是否有任何软件可以提供更多关于使用内存的信息?

具体到我自己的问题细节:自从升级到Windows 8.1后,我一登录就出现了这个问题。我一运行任何程序就会用完内存。我在进程资源管理器中注意到,几个iexplore.exe实例正在运行,显然是自动启动的。其中一个特定的实例只用了几MB的内存,但却显示出数以亿计的页面故障。我心血来潮,把那个特定的进程杀了,内存使用量立即下降了70%。

这就引出了一个特殊的问题。

为什么杀死一个只用了几MB的进程就能释放出几GB的内存?

还有一个(可能是很难的)附加问题。

-除了重新安装Windows之外,我如何才能避免每次重启电脑时都要经历这些?

答案 (1)

6
6
6
2014-03-11 05:23:42 +0000

对了,你应该尽量不要用 “记忆 "这个词。它会造成很多混乱。如果你指的是物理内存,就说 "物理内存",或者 "RAM"。如果你指的是虚拟内存,就说 "虚拟内存"。如果你指的是备份存储,就说出来。

为什么无论我如何计算,总使用的内存都比所有列出的进程使用的内存高得多?

因为操作系统不会浪费物理内存(RAM),除非它别无选择。

如果不知道什么程序在使用内存,windows怎么会 "知道 "内存被使用了?

因为没有程序在使用它。例如,考虑到内存中包含一个刚刚终止的程序的代码。没有程序在使用它。但是这个内存被使用了,因为它不是空闲的,并且包含了可能有用的数据(在程序再次运行的情况下)。

哪些进程可能会占用内存,但现在却出现在列表中?

它没有被进程使用。

有没有什么软件可以提供更多关于已使用内存的信息? RAMMap 可以做到这一点。

只有两种可能,RAM可以被使用,也可以被浪费。显然,第一种更好。任何空闲的内存都是永远被浪费的–一台4GB的机器不可能为了明天使用6GB而今天使用2GB。如果你在想 "我现在想要它是免费的,这样我以后就可以使用它",忘了这一点。你可以现在使用它_以后再使用它。

杀死一个本应只使用几MB的进程,怎么可能释放出几GB的空间?

你的备份存储空间不足,而不是物理内存。你有很多可用的物理内存,但是没有足够的备份存储空间让操作系统继续分配可能需要备份的虚拟内存。

进程只使用了几MB的物理内存,但操作系统可能不得不为它保留几GB的备份虚拟内存。例如,假设一个进程创建了一个2GB文件的可写私有内存映射。操作系统必须为该进程保留2GB的后备虚拟内存,因为它可能会写到该映射的每一个字节。而且,它可能永远不会写到任何一个字节。这就是为什么你需要一个大小合适的分页文件。

现代操作系统会写很多支票(承诺支持存储),这些支票永远不会被兑现(需要RAM)。如果你已经写了一大堆可能会兑现也可能不会兑现的大支票(承诺了你有多少后备存储空间),即使你银行里有很多钱(空闲的RAM),你也不能继续写支票(承诺后备存储空间)。分页文件增加了后盾存储,让操作系统继续写支票。