我有一台带有 4 GB 内存的 Windows XP 机器。正如预期的那样(并在本网站上的十几个其他问题中进行了讨论),操作系统只能看到 3 个和一点点……直到昨天。截至昨天,“系统属性”窗口仅显示 768 MB RAM。
dxdiag 显示了同样的事情......实际上,它报告了 766 MB。另一方面,BIOS 仍然显示 4096 MB,并且 msinfo32 报告“总物理内存:4,096 MB”。
我以前从未见过这样的事情。我的其他 3.25 GB 内存可能去哪儿了?是不是某个有故障的驱动程序错误地将我的大部分内存映射到了某个硬件?
更新:目前情况的快速摘要:BIOS 显示 4 GB。MemTest86+ 显示 4 GB,并且它的所有测试都通过了。msinfo32 实用程序显示计算机中安装了 4 GB。但是,Windows XP“系统信息”和SliTaz Linux 都报告只有 768 MB 的内存。MemTest86+ 似乎最终排除了硬件问题,但两个操作系统看到同样的事情排除了软件问题!那么,我接下来要看哪里?
更新 2:我尝试将 CMOS 重置为出厂默认设置:不走运。我尝试取出其中一根(我有 2x2 GB)并启动:计算机只看到 768 MB。所以我把那根棍子拿出来,把另一根棍子放进去:768 MB。我把它们都拿出来放在第二组插槽中:768 MB。最后,以尝试一切的名义,我以“错误”的安排安装了两个模块,即不是成对的:仍然是 768 MB。无论我有什么内存安排,计算机都只能看到前 768 MB。
我刚刚在新的英特尔酷睿 i 系列处理器的规格中注意到,“最大内存大小”通常非常小——从 8GB 到 24GB。请参阅此处:http : //ark.intel.com/Product.aspx?id=41316
基于 Core 2 的主板刚刚开始推出对 32GB 和更大内存大小的支持。
任何人都知道最大内存大小表示什么?这是片上内存控制器的总限制吗?每个频道的限制?每根棍子的限制(例如密度??)?
考虑构建需要大量 RAM 的体面机器,所以我正在考虑 i7 860。
是否有任何工具可以从 Windows 7 的内存中转储正在运行的应用程序?
我希望我的 Windows 运行得尽可能快。如果我在 Windows 7 64 位、四核 CPU 和所有应用程序中都有 12GB 内存,并且所有应用程序都适合内存,那么交换文件会用于任何用途吗?问题是将交换文件放在 RAM 磁盘中是否是个好主意。
RAM 磁盘会以任何方式提供帮助,还是 Windows 会智能地使用所有可用内存来完成所有工作?
我也在考虑将临时文件夹放在 RAM 磁盘上。我知道 RAM 磁盘是易失性内存,如果丢失,我不在乎它的内容。
我最近注意到我机器上的 Windows 7 一直抱怨内存不足,我应该关闭一些程序。然后它通常会指出我正在运行的程序确实存在内存泄漏并且已经变得非常大。但是,通常这些程序从 20MB 的 RAM 使用量开始,并且只有在运行程序 12 到 24 小时后它们才会增长到最多 200MB 的 RAM 使用量。我从来没有同时运行超过三个这样的程序,所以我从我正在运行的程序中看到的最大 RAM 使用量为 600MB。
我在具有 4GB RAM 的机器上运行 Windows 7 x64。起初我实际上忘记了这一点,并且会在 Windows 抱怨时重新启动程序,但是现在我记得,Windows 抱怨我使用 600MB 的 RAM(即使您包括操作系统本身使用的内存也低于 2GB)这一事实似乎很奇怪. 因此,我拉起系统进程窗口,从列出的进程和系统进程中查看我的总内存使用情况。它加起来刚刚超过 700MB,所以我仍然很困惑。然后我转到资源监视器并打开内存选项卡。我想我在那里找到了答案。它指出我实际上只使用了 33% 的 RAM。但是在Physical Memory资源分配栏上,Modified部分最多2.3GB,Standby部分最多540MB,Free部分不到20MB,Cached内存排在2。8GB 和可用内存被列为 550MB。(当然,这些值会稍微四舍五入,因为在我写这篇文章时你在不断变化。)
所以显然 Windows 7 使用的内存比我多。在过去的某个时候,我确实对已安装的 Windows 服务菜单进行了一些修改,但这只是为了禁用某些托管服务,因为我不想进行任何媒体共享、启用 Telnet 客户端并删除 Internet Explorer,但这可能是我的错。有什么办法可以让 Windows 不这样做,或者至少不那么积极地缓存,所以我不再收到这些“内存不足”的通知?
我的简单理解如下。
存储器 (RAM) 由位组成,每组 8 组构成字节,每个字节都可以寻址,因此是字节可寻址存储器。
地址总线存储一个字节的内存位置。
如果地址总线的大小为 32 位,这意味着它最多可以容纳 2 32 个数字,因此它可以引用最多 2 32个字节的内存 = 4GB 内存,任何大于此值的内存都是无用的。
数据总线用于发送要写入/读取内存的值。如果我有一个 32 位大小的数据总线,这意味着一次最多可以写入/读取 4 个字节。我发现这个大小和可能的最大内存大小之间没有关系。
但我在这里读到:
尽管大多数系统都是字节可寻址的,但处理器移动尽可能多的数据是有意义的。这是由数据总线完成的,数据总线的大小是8位系统、16位系统、32位系统、64位系统等名称的来源。当数据总线为 8 位宽时,它可以在单个内存操作中传输 8 位。当数据总线为 32 位宽时(在写入时最常见),在单个内存操作中最多可以移动 32 位。
这表示数据总线的大小决定了操作系统的名称,8 位、16 位等等。我的理解有什么问题?
当我在资源管理器中监视计算机的内存使用情况时,我发现我经常遇到 60 到 100 个硬故障。
这是正常的吗?
或者,理想情况下,硬故障图应该是平坦的 0?
我运行 Windows 7,我有 4GB 内存。
有什么办法可以看到RAM内存的内容吗?从第一个字节到最后一个字节。我想查看操作系统及其上运行的所有进程在 RAM 中的位置。这可能吗?
到目前为止,我测试过的所有 GNU/Linux 发行版都存在这样一个问题:每当内存被填满并且系统开始交换时,整个桌面和图形用户界面都会变得无响应,有时我必须等待大约 5-10 秒移动物理鼠标直到鼠标指针实际移动。
这是一种令人讨厌的行为,尤其是在内存较低的系统上。
有什么方法可以让某些应用程序/作业(例如桌面环境等)比其他应用程序更优先保留在 ram 中,以便实际占用所有内存的应用程序在桌面环境等之前被交换?
编辑: 我说的是使用整个 RAM 的情况,因此如果未禁用它,它将始终开始交换(我不希望进程被随机终止)。我不仅在低内存环境中遇到了这个问题,而且在我的台式机上有 8GiB 内存时也遇到了这个问题,部分原因是许多虚拟机,部分原因是内存泄漏。ZRAM 也不是解决方案,因为它只会延迟问题。对于这个问题,我能想到的唯一解决方案是一些用户空间实用程序或内核 API,它们允许完全防止某些作业被交换,或者至少使其不太可能发生。有没有人知道其他解决方案,或者对现有或计划中的此类工具或 API 有所了解?
第二编辑: ulatencyd似乎并没有与systemd的较新版本的工作呢,根据https://aur.archlinux.org/packages/ulatencyd-git/和https://wiki.archlinux.org/index.php/Ulatencyd . 如果我理解正确的话,这可能是因为 systemd 从用户空间的角度接管了对 cgroup 的完全控制。
执行ps ux返回一个很好的进程信息列表,很容易grep通过 或watch。但是,内存使用输出似乎没有太大的灵活性;的RSS(驻留集大小)被印刷在KB,这对于大的流程是难以阅读(尤其是一目了然),和%MEM给出100 × RSS/ system_memory。
该du实用程序有一个可爱的-h标志,可以以更加用户友好的方式打印空间。我一直无法找到任何等效的ps. 有没有特殊的格式化技巧可以做到这一点?