【问题标题】:What will happen if a application is large enough to be loaded into the available RAM memory?如果应用程序大到足以加载到可用 RAM 内存中会发生什么?
【发布时间】:2010-12-18 06:53:38
【问题描述】:
有可能需要在低配置系统中启动重量级应用程序..(特别是当系统内存太少时)
另外,当我们已经在系统中打开了很多应用程序并继续尝试打开新的新应用程序时会发生什么?
当我尝试在低配置下使用它时,我只看到应用程序需要时间来处理或挂起一段时间。具有低内存和旧处理器的系统..
当内存不足时,它如何能够容纳许多应用程序..? (比如 128 MB 或更小..)
它是否涉及任何分页或其他内容..?
谁能告诉我这背后的理论..!
【问题讨论】:
标签:
memory
operating-system
memory-management
【解决方案1】:
“重量级”是一个非常模糊的术语。当操作系统加载您的程序时,EXE 会映射到您的地址空间中,但只有运行的代码页(或引用的数据页)会根据需要进行分页。
如果在程序运行时需要不断地交换页面(也就是许多硬页面错误),您可能会得到糟糕的性能,但它应该可以工作。
由于您的提交费用接近提交限制,并且提交限制可能没有增长空间,您也可能会收到许多 malloc()/VirtualAlloc(..., MEM_COMMIT)/HeapAlloc()/{Local|Global}Alloc() 失败,所以您需要查看程序中的返回码。
【解决方案2】:
经常使用虚拟内存。如果使用虚拟内存页面,则将其映射到物理内存。如果需要一个物理页面并且没有可用的页面,则将另一个页面写入磁盘。这称为交换,这解释了为什么拥挤的系统会变慢而内存升级对性能有积极影响。