计算机使用的内存不超过我 8GB 内存中的 4 个......?(64 位计算机)

mat*_*cfp 17 memory windows-7 64-bit

最近,为了使我的计算机面向未来,我在原来的 4GB 内存的基础上增加了。我将总内存增加到 8GB,但速度没有明显变化——即使应该如此。我去查看任务管理器,发现我的计算机不会使用超过 4GB 的内存,即使 Chrome 和 Firefox 都以 20 个选项卡打开。

经过研究,每个人建议做的一切都是检查有多少内存可用。奇怪的是,它说我有 8GB 的​​内存,而 7.74GB 是可用的。

可以在此处找到我的 HP Pavilion g7-1075dx 的规格。 它是一款搭载 Windows 7 Home Premium 64 位和 AMD Phenom II 的笔记本电脑。

我的主要问题是:对于我的 64 位计算机,为什么我的计算机不使用超过 4GB 的内存,即使超过 7GB 可用?

编辑:如果有帮助,资源监视器将所有其他 RAM 描述为“待机”

Jam*_*han 28

如果有帮助,资源监视器会将所有其他 RAM 描述为“备用”

“备用”RAM正在使用中。它被用作页面缓存(它保存所有进程工作集中最近丢失的页面;即这些页面错误可以在不转到磁盘的情况下解决),也用于 SuperFetch 的主动文件缓存。

它被认为是“可用的”,因为在将备用页面分配给其他用途之前不必将它们写入磁盘。比如当一个进程击中一个页面错,确实需要从磁盘读取,新的物理页面(一个或多个)必须分配给该进程,并在必要时这些都可以从备用列表中提取。(这不是为此目的查找页面的首选,那将是空闲页面列表,然后是零页面列表。)

换句话说,您的系统正在正常运行。

您可以使用命令行工具testlimitWindows Internals中的实验中使用的工具之一)轻松强制您的系统获得更多 RAM 进入“使用中”状态。它不是常规 sysinternals 工具的一部分,但与它们相关联;发现这里的Sysinternals的网站。下载的是一个 zip 文件,包含两个版本,testlimit.exe 和 testlimit64.exe。两者都是链接大地址感知的,因此 32 位版本将能够在以 /3GB 启动的 32 位机器上分配最多 3 GiB,在 64 位机器上最多分配 4 GiB。

c:\> testlimit -? 提供帮助。

c:\> testlimit -d 4 -c 512将尝试在 512 个分配中分配 2 GiB 的进程私有虚拟地址空间,每个分配 4 MiB。这在 64 位机器上应该可以正常工作。在使用 /3GB 启动的 32 位机器上(大多数不是),它可能会更早出错 b/c 过程中已经有一些 MiB 的东西(如程序本身、所有 DLL 等),所以没有足够的 2 GiB 可供程序分配。

在这两种情况下,“可用”RAM 都会减少,“使用中”RAM 会增加,但不一定是 2 GiB,因为无法保证操作系统会将所有 2 GiB 留在进程私有工作集中。即使它在短期内这样做,您也可能会在稍后看到进程工作集减少,因为操作系统决定“嗯,你没有真正用它做任何事情,其他进程需要它更多”并将其分页。

将分配“块”的大小增加太多,相应地减少块的数量,并且由于每个分配必须几乎连续,因此它可能会更快失败。例如,尝试在 4 GiB 地址空间中找到七个 512 MiB 的块,您可能会失败。

如果您使用 l(eak) 选项而不是 d(irty) 程序将分配虚拟空间但永远不会引用它。这不会导致“可用”RAM 的任何明显减少。

(d(irty) 选项的名称来自 x86/x64 页表条目中的“脏页位”,当使用“修改”样式的操作数访问相应的虚拟页时设置该位,这意味着该页的内容具有已更改。这是 Windows 的指示,如果页面必须从进程工作集中驱逐,则必须将其内容保存在某处,然后页面才能用于其他用途。设置了“脏”位的页面转到驱逐后立即“修改页面列表”;从那里,Windows 将它们写入各自的后备存储。)

您需要有足够的“提交”才能使这些测试按上述方式工作(即使对于 l(eak) 选项,即使此选项不使用任何可观的 RAM 量)。具体来说,在开始测试之前,您的“提交限制”应至少比“提交费用”高 2 GiB(或无论您分配多少)。请注意,即使您使用的是 l(eak) 选项,而不仅仅是 d(irty),这也适用。如果您遇到此限制,您将看到“系统内存不足”弹出窗口或类似消息。当然,解决方法是添加更多 RAM 和/或增加页面文件设置。


mis*_*256 15

Windows 实际上可以配置为限制 RAM 使用。我不知道如何或谁会在您的笔记本电脑上配置此设置,但您应该检查:

最大 RAM 设置

这篇文章有更多细节,但进入上面的对话框很容易:

  1. 单击“开始”图标并msconfig.exe在搜索框中键入

    如何启动 msconfig

  2. 启动 msconfig.exe,单击Boot选项卡,然后单击Advanced Options...按钮,您将进入:

    msconfig 启动设置对话框

  3. 要么输入一个合理的值,例如 8192 表示 8GB RAM,要么Maximum memory完全取消选中该复选框,这将使 Windows 使用您拥有的所有 RAM。我肯定会尝试两种选择。

    最大内存设置


Tho*_*ler 10

您可以使用SysInternals RAMMap来准确查看 PC 对您的物理RAM 的处理。任务管理器或进程资源管理器等其他工具主要关注虚拟内存,并不是这种情况的最佳工具。

在“使用计数”选项卡中,您可能会看到大部分应用程序在您没有打开许多应用程序时都未使用。

SysInternals RAMMap

这并不意味着您的 PC 将永远保持这种状态。只需打开几个程序,内存就会被使用。


Xtr*_*osh 5

Windows 做了一些聪明的事情,比如分页内存。可能是因为它认为您正在执行的大多数任务都是不必要的,并决定将大量内容转储到页面文件中,使其看起来好像只是为了避免耗尽所有 RAM。您可以通过禁用分页来测试这个理论,尽管这不是您应该永久配置的。互联网上有很多教程可以做到这一点。它所做的一件事(即使在我的 24GB 和 64GB 机器上)是在达到大约 50%、80% 和 90% 的消耗(这些数字是近似值)时使分页规则更加严格。我注意到在每个阶段都会将大量内容转储到页面文件中。

一件有趣的事情可能是这样的:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define PAGE_SZ (1<<12)

int main() {
    int i;
    int gb = 2; // memory to consume in GB

    for (i = 0; i < ((unsigned long)gb<<30)/PAGE_SZ ; ++i) {
        void *m = malloc(PAGE_SZ);
        if (!m)
            break;
        memset(m, 0, 1);
    }
    printf("allocated %lu MB\n", ((unsigned long)i*PAGE_SZ)>>20);
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

那是一些C代码。获取 GCC 或一些编译器,让自己成为一个 exe,然后看着你的内存消耗上升。如果要消耗超过 2GB 的内存,则需要编译并作为 64 位进程运行。如果你喜欢那种东西,它可能是一个有趣的实验,如果没有别的:)

编辑:只是想注意程序不会因此而死。我从以前的一些代码中编辑了它,因为我不确定其他代码是否会起作用(内存将被分页,导致没有内存被消耗,大声笑)。新代码包含一行int gb = 2; // memory to consume in GB- 更改 2 将调整程序应消耗的内存量,因此您可以将其设置为尽可能多地使用。将它设置为高于您的系统可能会导致它崩溃(未测试,因此请谨慎使用)

  • @mattycfp 所以你不能在你的操作系统中使用 &gt; 4GB 的 RAM,你的所有下载都在不断损坏?是时候 **(a)** 擦拭硬盘驱动器并重新安装操作系统,或者 **(b)** 将笔记本电脑扔进垃圾箱并获得合适的笔记本电脑。 (6认同)

mis*_*256 5

引用一篇关于这个主题的非常好的文章

更多的内存实际上并没有提高[计算机的] 处理速度。只有更快的 CPU 才能做到这一点。

根据我的经验,总的来说,这是绝对正确的。除非您同时运行许多程序并且这些程序对 RAM 有很大的要求,否则您几乎看不到超过 4GB RAM 的任何实际好处。

人们似乎没有意识到 4GB 是一大堆内存。让 Windows 使用得更多需要付出努力。您将不得不打开许多不同的应用程序,并在这些应用程序中打开一些大文件。放入几个 YouTube 视频标签,您可能会开始看到 >4GB 的使用率。

  • @misha256 如果您的系统不断交换内存,您*将*看到性能提升。随着内存压力的增加,分页增加,系统变慢。并不是说增加内存会让你跑得更快,而是它*会*让你不减速,特别是如果所涉及的软件在其系统要求中假设了一定数量的分页。那篇文章似乎没有提到太多关于分页的内容。分页会减慢您的速度。 (4认同)
  • @misha256 我打开了 IRC、Spotify、Notepad++、Chrome 和任务管理器,我使用了总 4GB 中的 3.02GB :( 打开 3 个 VS2013 实例(我倾向于在工作中这样做),这让我感到非常兴奋。这是达到 4GB 的限制比您想象的要容易一些,但实际上需要高级用户。 (4认同)
  • @mattycfp 120 FF 的窗口?与 RAM 相比,您更有可能最大限度地利用 CPU,尤其是在笔记本电脑上。另外不要忘记FF是一个32位的应用程序,多个FF窗口实际上共享一个32位进程,所以FF实际上是非常有限的,它只能使用你8GB总量中的2GB。这就是为什么你需要同时运行许多*不同*的应用程序来测试 Windows 如何使用你的 RAM,而不仅仅是 120 个 FF 的 Windows。 (3认同)
  • @mattycfp 我刚刚在我的 4GB 机器上打开了 16 个 Windows,包括 Internet Explorer、Firefox、Word、Excel、Outlook、Skype、Visual Studio 2010(一个已知的 RAM 猪)、Photoshop、媒体播放器、VLC、MPC-HC,加上一些其他随机应用程序,我在它们之间切换做事、加载文档、播放视频等等,我的实际 RAM 使用量为 2.2GB,而且机器和以前一样快。看,4GB 就这么简单;-) (2认同)