1
0
是的,这基本上是正确的。实际的数字可能(非常)略低一些,但为了所有的意图和目的,如果你有
|
2
5
实际上,它本质上是正确的,但您的“虚拟”内存并不存在 在旁边 你的“物理记忆”(如马修·夏利所说)。 您的“虚拟内存”是一个抽象层,涵盖“物理”(如RAM)和“交换”(如硬盘,当然也包括RAM)内存。 虚拟内存本质上是一个抽象层。您的程序总是处理一个“虚拟”地址,您的操作系统将其转换为RAM或磁盘上的地址(需要先加载到RAM),具体取决于数据所在的位置。所以你的程序不必担心内存不足。 |
3
1
再简单不过了… 内存页被懒散地分配。一个进程可以malloc()大量的内存,并且永远不会使用它。所以在你的500MB内存+500MB内存交换系统上,我可以——至少在理论上——从堆中分配2千兆内存,在我尝试使用过多的内存之前,一切都会顺利进行。(此时,任何进程都无法获取更多的内存页。希望这是我的过程。但并非总是如此。) 作为32位系统的硬地址限制,单个进程可能限制为4 Gig。即使你在机器上有超过4吉格的RAM,并且你正在使用地狱寻址方案中奇怪的36位分段暴行,单个进程仍然仅限于4吉格。这4个gig中的一些必须用于共享库和程序代码。因此,作为一个地址限制,您最多可以获得2-3 Gigs的堆栈+堆。 你可以在mmap文件,有效地给你更多的内存。它基本上充当额外的交换。也就是说,该文件只是mmap,而不是将程序的二进制代码数据加载到内存中,然后将其交换到swapfile中。根据需要,页面直接从文件交换到RAM中。 您可以使用稀疏数据和mmap稀疏文件来了解一些有趣的内容。我见过X-Windows声称其内存使用量巨大,而实际上它只消耗了一点点。 顺便说一句: 自由的 “也许能帮到你。可能的话” 目录/进程/内存信息 “或 虚拟机 线在 /proc/$pid/状态 . (特别是 虚拟机数据 和 VMSTK 或者可能” PS-$PID “ |
4
1
虽然大部分都是真的,但事实并非如此
完全地
对的。对于特定进程,运行它的环境可能会限制进程可用的内存。检查的输出
|
CENTURION · Python:用更少的变量编写新列表 6 年前 |
Babai I. · 交换数据中的字符或字符串。帧[重复] 6 年前 |
Ben · 为什么这个交换程序不能在C中工作? 7 年前 |
va05 · 没有临时变量的交换函数无法正确使用快速排序 7 年前 |
Frank Ridder · 在C中交换双精度数字[重复] 7 年前 |