Моему серверу не хватает памяти, несмотря на то, что у меня все свободно

Я использую 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 будет использовать всю память для кэширования файловой системы, чтобы снять нагрузку с дисков и сделать доступ к файлам очень быстрым. Ядро освобождает память, используемую для кэширования, по мере необходимости, когда приложения запрашивают ее.

Я уверен, что у вас осталось много свободной памяти.

Другие вопросы по тегам