Я использую Debian 6 (Squeeze). На сервере 4 ГБ памяти и 8 ГБ подкачки. Я начинаю получать ошибки выделения памяти при высокой загрузке приложения, но с помощью команды top:
Mem: 4055944k total, 3915436k used, 140508k free, 10444k buffers
Swap: 7999480k total, 0k used, 7999480k free, 3604496k cached
Система даже не пытается использовать своп?
Почему это могло происходить? Я хотел бы обновить основную память, но сейчас это невозможно.
Спасибо.
По запросу ошибка / исключение:
terminate, вызываемый после создания экземпляра '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
Однако сейчас система не находится под большой нагрузкой.
Это результат сверху. Посмотрите на следующий результат
free -m
Затем посмотрите на свободный столбец для строки +/- буферов. Это ваша настоящая свободная память, которую могут использовать приложения. Linux будет использовать всю память для кэширования файловой системы, чтобы снять нагрузку с дисков и сделать доступ к файлам очень быстрым. Ядро будет освобождать память, используемую для кэширования, по мере необходимости, когда приложения запрашивают ее.
Я уверен, что у вас осталось много свободной памяти.