Моему серверу не хватает памяти, несмотря на то, что у меня все свободно
Я использую Debian 6 (Squeeze). Сервер имеет 4 ГБ памяти и 8 ГБ подкачки. Я начинаю получать ошибки выделения памяти при высокой загрузке приложения, но из верхней команды:
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 будет использовать всю память для кэширования файловой системы, чтобы снять нагрузку с дисков и сделать доступ к файлам очень быстрым. Ядро освобождает память, используемую для кэширования, по мере необходимости, когда приложения запрашивают ее.
Я уверен, что у вас осталось много свободной памяти.