2

我发布这个问题是因为我在谷歌搜索和stackoverflowing上找不到答案......

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

是否偷偷使用更多硬盘空间,或通知异常

4

2 回答 2

3

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

  • 程序检查以确保分配顺利(即在 C 中,有一个 malloc 的返回码),如果它不顺利,那么它将优雅地退出,并带有曾经普遍存在的“内存不足”错误消息。Java 和 C++ 具有相同目的的例外。

  • 程序不检查是因为,真的,谁内存不足了?(这是一个在这里思考的程序员。)我敢打赌,可能有很多程序写在那里不检查对 malloc 的调用是否成功,因此他们试图使用错误的指针并导致内存访问冲突,导致程序在 Windows 中以漂亮的“此程序遇到问题”消息退出,或在 Unix 中以简洁的“Segfault”消息退出。

于 2012-09-29T17:08:39.093 回答
3

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

于 2012-09-29T17:09:36.237 回答