我发布这个问题,因为我无法在google搜索和stackoverflowing上找到答案...
问题是: 当虚拟内存的交换空间耗尽时会发生什么。当所有RAM和虚拟内存都耗尽时,操作系统如何处理这种情况。
它是否在HDD上秘密使用更多空间,或者通知异常
答案 0 :(得分:3)
我将假设虚拟内存是指交换空间(它们在技术上是不同的概念)。我可以想到两件事:
程序检查以确保分配顺利(即在C中有一个malloc的返回码),如果它没有顺利,那么它将优雅地退出一次无处不在的“Out of内存“错误信息。 Java和C ++出于同样的目的有例外。
程序没有检查,因为,实际上,谁已经耗尽了内存? (这是一个程序员在这里思考。)我敢打赌,有很多程序写出来的机会不检查是否成功调用malloc,因此他们尝试使用错误的指针并导致内存访问冲突,导致程序在Windows中以“此程序遇到问题”消息退出,或在Unix中以简洁的“Segfault”消息退出。
答案 1 :(得分:2)
我不确定Windows如何处理它,但在* nix系统上,内核运行OOM Killer程序(更多信息可以在http://linux-mm.org/OOM_Killer找到)