尽管所有交换空间都可用,但我的服务器内存不足

尽管所有交换空间都可用,但我的服务器内存不足

我使用的是 Debian 6 (Squeeze)。服务器有 4gb 内存和 8gb 交换空间。在应用程序加载时间较长时,我开始收到内存分配错误,但从 top 命令:

Mem:   4055944k total,  3915436k used,   140508k free,    10444k buffers
Swap:  7999480k total,        0k used,  7999480k free,  3604496k cached

系统甚至没有尝试使用交换?

为什么会发生这种情况?我想升级主内存,但是现在还不可能。

谢谢。

根据要求,错误/异常是:

抛出“std::bad_alloc”实例后调用终止 what(): std::bad_alloc ·

据我所知,只有当内存耗尽时才会出现这种情况。

另外,这里是“free -m”的输出:

             total       used       free     shared    buffers     cached
Mem:          3960       3334        625          0         19       2847
-/+ buffers/cache:        467       3493
Swap:         7811          0       7811

不过现在系统负载并不重。

答案1

这是顶部的输出。看看下面的输出

free -m

然后查看 +/- 缓冲区行的可用列。这是应用程序可以使用的真正可用内存。Linux 将使用所有内存进行文件系统缓存,以减轻磁盘负载并使文件访问速度非常快。当应用程序请求时,内核将根据需要释放用于缓存的内存。

我确信您还有足够的可用内存。

相关内容