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 的主动文件缓存。
它被认为是“可用的”,因为在将备用页面分配给其他用途之前不必将它们写入磁盘。比如当一个进程击中一个页面错,确实需要从磁盘读取,新的物理页面(一个或多个)必须分配给该进程,并在必要时这些都可以从备用列表中提取。(这不是为此目的查找页面的首选,那将是空闲页面列表,然后是零页面列表。)
换句话说,您的系统正在正常运行。
您可以使用命令行工具testlimit
(Windows 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 和/或增加页面文件设置。
Tho*_*ler 10
您可以使用SysInternals RAMMap来准确查看 PC 对您的物理RAM 的处理。任务管理器或进程资源管理器等其他工具主要关注虚拟内存,并不是这种情况的最佳工具。
在“使用计数”选项卡中,您可能会看到大部分应用程序在您没有打开许多应用程序时都未使用。
这并不意味着您的 PC 将永远保持这种状态。只需打开几个程序,内存就会被使用。
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 将调整程序应消耗的内存量,因此您可以将其设置为尽可能多地使用。将它设置为高于您的系统可能会导致它崩溃(未测试,因此请谨慎使用)
更多的内存实际上并没有提高[计算机的] 处理速度。只有更快的 CPU 才能做到这一点。
根据我的经验,总的来说,这是绝对正确的。除非您同时运行许多程序并且这些程序对 RAM 有很大的要求,否则您几乎看不到超过 4GB RAM 的任何实际好处。
人们似乎没有意识到 4GB 是一大堆内存。让 Windows 使用得更多需要付出努力。您将不得不打开许多不同的应用程序,并在这些应用程序中打开一些大文件。放入几个 YouTube 视频标签,您可能会开始看到 >4GB 的使用率。
归档时间: |
|
查看次数: |
50567 次 |
最近记录: |