Мне нужно сбрить как можно больше памяти.Я использую стандарт C ++ с STL.Программа не делает много (пока) и все еще занимает 960Kb [согласно top
]!Размер исполняемого файла составляет всего 64 КБ.
Код длиной 3000 строк, я не собираюсь публиковать, очевидно.Я считаю, что проблема не в моем коде, а в системных библиотеках.
Одна функция main () (включает весь мой код, но не использует ее) использует 732 КБ ОЗУ !
Простой код:
int main() {
sleep(1000); //do nothing
return 0;
}
//Uses 732kb of RAM
В моем коде нет глобальных переменных (кроме тех, что в библиотеках, которые скрыты от меня).
Я используюстандартные библиотеки: libstdc ++ (STL), GNU libc.Также один BSD-сокет и libev и нестандартный класс веревки STL.
Есть ли какой-нибудь профилировщик памяти, который я могу запустить?
Платформа : Linux 2.6.18-32, 32-разрядный процессор, общая оперативная память 16 МБ, без подкачки
Компилятор : GCC 4
Стандартная библиотека : Компилятор GCC libstdc ++
КомпиляторОпции : -Os (без символов отладки)
Я не , интенсивно использующий шаблоны: контейнеры и итераторы, вот и все.Однако я интенсивно использую веревочный класс SGI STL.
Средой тестирования является базовый сервер под управлением Linux с 128 МБ ОЗУ, Pentium III 667 МГц, CentOS 5.5, без эмуляции.
ОБНОВЛЕНИЕ : Мне интересно, являются ли сами библиотеки (размер кода) причиной проблемы.Разве разделяемые библиотеки не требуют загрузки в ОЗУ?