程序何时会出现'内存不足异常'。是没有足够的虚拟地址范围还是因为没有足够的物理内存?
根据我的理解,只有在没有足够的虚拟地址可用时才会发生,因为可以通过分页未使用的部分来提供物理存储。
请澄清。
谢谢, 苏雷什。
答案 0 :(得分:2)
如果您看到OutOfMemoryException
,则可能是.Net应用程序。具有讽刺意味的是,您所描述的条件几乎永远是.Net中OutOfMemoryException
的来源。
在大多数情况下,最好将OutOfMemoryException
视为OutOfSomeCriticalResourceButNotRAMIronicallyEnoughException
。或者甚至更糟:例如,当您尝试打开无效的图像文件时.Net会抛出OutOfMemoryException
。
答案 1 :(得分:1)
可用内存总量=物理(RAM)加页面文件。
如果两者都已满,则会在任何进一步的内存分配请求中获得异常。
在某些系统上,由于内核为自己预留了一部分物理RAM,所以进一步限定了这一点,因此用户模式程序可以竞争其余部分。
答案 2 :(得分:0)
当你的可寻址空间用完时,程序无法访问。这通常意味着虚拟地址范围,但如果你有足够的RAM,它将是物理内存。