虚拟内存耗尽时会发生什么

时间:2012-09-29 16:55:13

标签: operating-system virtual-method

我发布这个问题,因为我无法在google搜索和stackoverflowing上找到答案...

问题是: 当虚拟内存的交换空间耗尽时会发生什么。当所有RAM和虚拟内存都耗尽时,操作系统如何处理这种情况。

它是否在HDD上秘密使用更多空间,或者通知异常

2 个答案:

答案 0 :(得分:3)

我将假设虚拟内存是指交换空间(它们在技术上是不同的概念)。我可以想到两件事:

  • 程序检查以确保分配顺利(即在C中有一个malloc的返回码),如果它没有顺利,那么它将优雅地退出一次无处不在的“Out of内存“错误信息。 Java和C ++出于同样的目的有例外。

  • 程序没有检查,因为,实际上,谁已经耗尽了内存? (这是一个程序员在这里思考。)我敢打赌,有很多程序写出来的机会不检查是否成功调用malloc,因此他们尝试使用错误的指针并导致内存访问冲突,导致程序在Windows中以“此程序遇到问题”消息退出,或在Unix中以简洁的“Segfault”消息退出。

答案 1 :(得分:2)

我不确定Windows如何处理它,但在* nix系统上,内核运行OOM Killer程序(更多信息可以在http://linux-mm.org/OOM_Killer找到)