电脑未使用超过8GB RAM中的4个…?(64位计算机)


17

最近,为了适应我的计算机的未来需求,我在原来的4GB内存之上添加了内存。我将总内存增加到了8GB,即使在应该的时候,速度也没有明显变化。我去研究了任务管理器,发现我的计算机不会占用超过4GB的内存,即使Chrome和Firefox都打开时每个都有20个选项卡。

经过研究,每个人都建议做的所有事情就是检查可用内存量。奇怪的是,它说我有8GB的内存,而7.74GB可用。

我的HP Pavilion g7-1075dx的规格可以在这里找到。 它是一台笔记本电脑,带有Windows 7 Home Premium 64位和AMD Phenom II。

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

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


1
您如何看待它使用的容量不超过4GB?您是否尝试过其他程序来测试或使用内存?Chrome和Firefox对内存的要求并不高...
Mokubai

9
到目前为止,没有人提到更多的RAM本身并不能使计算机更快。您唯一会看到明显的速度提升是,如果您的工作量消耗了如此多的RAM,而Windows需要连续将其分页到磁盘–在这种情况下,增加更多的RAM肯定可以加快处理速度。但是98%的人不会做那些需要大于4GB RAM的事情,因此,拥有所有这些额外的RAM将永远不会有任何明显的好处。
misha256

1
@mattycfp我知道还有另一种可能会限制Windows RAM使用的可能性。您,其他人或某些软件是否可能限制RAM使用量?看看这篇文章,并按照指示:helpdeskgeek.com/windows-7/...
misha256

1
Firefox在所有标签页/进程中均限制为2GB,Chrome可能也是如此。这是正常的每个进程限制。
JamesRyan 2015年

6
仅仅打开Firefox和Chrome并分别显示20个标签是远远不够的。我用157个选项卡打开了Firefox,它甚至不消耗1 GB的RAM。在运行游戏时检查。杰米·汉拉汉(Jamie Hanrahan)的答案非常详尽。有关更多信息,请阅读Mark Russinovich的博客文章“推动Windows的极限”。链接
sbecker's

Answers:


27

如果有帮助,资源监视器会将所有其他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将尝试在每个4 MiB的512个分配中分配2 GiB的进程专用虚拟地址空间。这在64位计算机上应该可以正常工作。在使用/ 3GB引导的32位计算机上(大多数不是),它可能会更早出错b / c,在此过程中已经存在一些MiB内容(例如程序本身,所有DLL等),因此没有足够的2 GiB可供程序分配。

在这两种情况下,“可用” RAM都会减少,“使用中” RAM会增加,但是不一定要2 GiB的价值,因为不能保证操作系统将所有2 GiB留在进程专用工作集中。即使在短期内做到了这一点,您也可能会看到该进程的工作集以后会减少,因为OS决定“ hm,您实际上并没有对其进行任何操作,其他进程则需要更多”并进行分页。

过多增加分配“块”的大小,从而减少块的数量,并且由于每个分配实际上必须是连续的,因此有可能很快失败。例如,尝试在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和/或增加页面文件设置。


16

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

最大拉姆设定

文章有更多的细节,但得到上面的对话框很简单:

  1. 单击开始图标,然后msconfig.exe在搜索框中键入

    如何启动msconfig

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

    msconfig引导设置对话框

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

    最大夯设定


@ misha256-对于最初内容很少的答案深感困惑,是的,如果其他人提交了其中一个答案,我什至不会对答案再三思量(除非判断它们的帮助稍微苛刻)。
Ramhound

@ misha256,如果这是问题所在,那么OP不会看到正在使用4 GB的数据,而大约还有4 GB的备用数据。该选项所排除的RAM不会显示在“备用”中。OP也不会看到“ 8GB内存,而7.74GB可用”。(由于例如视频卡,预计256 MB不可使用)。
Jamie Hanrahan 2015年

10

您可以使用SysInternals RAMMap来准确查看PC对物理 RAM的处理方式。其他工具(例如任务管理器或Process Explorer)主要关注虚拟内存,而不是针对这种情况的最佳工具。

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

SysInternals RAMMap

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


不应使用术语“虚拟RAM”。另外,我不会说那些其他工具主要关注虚拟内存-它们有大量可用计数器来显示物理内存使用情况。
Jamie Hanrahan

5

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

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

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

人们似乎没有意识到4GB是很多RAM的地狱。使Windows使用更多的资源需要付出努力。您将不得不打开许多不同的应用程序,并在那些应用程序中打开一些大文件。在YouTube视频中添加几个标签,您可能会开始发现> 4GB的利用率。


2
@mattycfp我刚刚在4GB的计算机上打开了16个Windows,包括Internet Explorer,Firefox,Word,Excel,Outlook,Skype,Visual Studio 2010(已知的RAM猪),Photoshop,Media Player,VLC,MPC-HC,加上一些其他随机应用程序,我在它们之间进行工作,加载文档,播放视频等所有操作之间进行切换,而我的实际RAM使用量为2.2GB,并且计算机像以往一样快速。看,4GB做到了一切;-)
misha256

3
@mattycfp 120 FF的Windows?与RAM相比,您更有可能最大化CPU,尤其是在笔记本电脑上。同样不要忘记FF是32位应用程序,并且多个FF窗口实际上共享一个32位进程,因此FF实际上非常有限,它只能使用8GB总数中的2GB。因此,您需要同时运行许多不同的应用程序以测试Windows如何使用您的RAM,而不仅仅是FF的120个Windows。
misha256

4
@ misha256 如果系统不断交换内存,您看到性能提升。随着内存压力的增加,分页增加,并且系统变慢。并不是说增加内存可以使您运行得更快,但可以防止速度变慢,特别是如果所涉及的软件在其系统要求中假定一定量的分页时。那篇文章似乎没有提到太多关于分页的内容。分页会使您减速。
phyrfox

4
@ misha256我打开了IRC,Spotify,Notepad ++,Chrome和任务管理器,而我正在使用的总4GB空间中的3.02GB :(打开了3个VS2013实例(我倾向于在工作中做),这使我精力充沛。达到4GB的限制比您想象的要容易一些,但实际上需要高级用户才能使用
Thebluefish

1
@ misha256纠正:FF具有大地址意识,并且可以在32位进程中寻址多达3GB。FF的64位版本(当前处于Windows beta版)显然可以解决更多问题。我还说您很难“使用”(驻留的私有工作集)超过4GB的RAM,这让您有点过于笼统。这实际上取决于您在做什么以及保持多少开放。我的基准使用量已经超过了。
鲍勃

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;
}

那是一些C代码。获取GCC或某些编译器,使自己成为exe,然后观察内存消耗量增加。如果要消耗2GB以上的内存,则需要编译并作为64位进程运行。如果您喜欢这种事情,那可能是一个有趣的实验,如果没有其他:)

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


我希望可以编译它,但我的互联网一直在破坏我尝试的所有下载内容:U
mattycfp 2015年

5
@mattycfp因此,您不能在操作系统中使用> 4GB的RAM,并且所有下载内容都在不断损坏吗?是时候(a)擦拭硬盘驱动器并重新安装操作系统,或者(b)将笔记本电脑扔进垃圾桶中,并准备好合适的笔记本电脑。
misha256

1
提供的程序一次分配并“触摸” 2 GB的虚拟内存,一次一页,这将导致每个页面在分配后立即被故障转移到RAM中。但这不能保证Windows会同时将其全部保留在RAM中。由于该程序不会重复访问所有虚拟机,因此首先分配的页面可能会被调出页面。您可以使用Windows Internals工具“ testlimit”(选项-d)获得与该程序相同的效果。
Jamie Hanrahan

@mattycfp如果是这种情况,您可能想看看RAM没问题...下载的每个文件是否都以某种方式损坏了?有时还会出现不兼容的摇杆问题,因此,您应该查看主板手册,并确认RAM是否按照这些说明进行组织(插槽编号为1&2或1-4,通常1&3必须与硬盘配对。相同的RAM的“类型”或“品牌和型号”,如2和4)。&是这个程序应该使用了2GB,可以通过改变线路进行编辑int gb = 2; // memory to consume in GB-只是改变2
XtrmJosh

为什么当唯一的使用将gb强制转换为unsigned long时,为什么将gb声明为int类型?您还以相同的方式对待我,在int和强制转换为unsigned之间进行了混合比较。所以,也请让我长签名。
JDługosz

1

您是否使用32位程序测试计算机的运行速度?如果是这样,请注意,即使您有更多的RAM,32位地址也只能指向4 GB的RAM。如果需要有用的结果,则需要使用64位程序重复测试,并在存在4 GB RAM的情况下检查其速度,然后在存在8 GB RAM的情况下再次进行测试。另外,它必须是一个64位程序,它可以使用超过4 GB的内存才能更快地运行-并非所有人都可以。要确定程序是否为32位,请启动该程序并使其运行,然后启动Windows Task Manager,单击“进程”,然后向下滚动直到找到所需的程序。如果“映像名称”列中的程序名称后跟一个空格,则为* 32,则它是一个32位程序。


如果运行多个32位程序,则它们的总RAM使用量很容易达到8 GB。
杰米·汉拉汉

0

从Sysinternals获取流程浏览器(procexp)。它具有资源图,并且可以显示每个进程的内存使用情况,比库存过程视图要好得多。

您可以查看物理ram使用与虚拟spqce的使用情况,以查看是否只是没有全部使用完,或者您似乎需要更多但正在限制物理使用。

大多数普通程序使用不同的工作集大小,这会使需求保持较低水平。如果一个程序分配了大量的内存,则实际上不能同时使用所有内存...

Windows会主动将页面从程序移至可用列表,但是如果发生页面错误,则无需从交换文件中加载就可以从列表中撤回页面。在待机状态可能会包括这些。不同的工具以不同的方式标记不同的集合。

您至少可以在此测试中尝试关闭交换文件。这将导致真正使用数据存储器。尽管procexp可能足以清楚地看到这一点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.