我使用的是 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 将使用所有内存进行文件系统缓存,以减轻磁盘负载并使文件访问速度非常快。当应用程序请求时,内核将根据需要释放用于缓存的内存。
我确信您还有足够的可用内存。