URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5487
[ Назад ]

Исходное сообщение
"как ограничить потребление виртуальной памяти в приложении"

Отправлено Serega_S , 09-Июн-06 07:31 
Есть проект (консольный чат) на Си/С++. Использование оперативной памяти - примерно 1,4 Мб. При этом использование виртуальной памяти доходит до 70 Мб! Используется динамическая загрузка библиотек (парочка небольших модулей). Думал уже какие-то большие утечки памяти - проверил ccmalloc-ом - общая выделенная память порядка 400 Кб, ну и утечек нашёл на 60 Кб. Это я всё пофиксю, но вот как бороться с 70Мб виртуальной памяти? На моём ноутбуке проект не запускается (ноут с 32 ОЗУ - malloc вываливается с ошибкой).

Вопрос - как можно разобраться в этом?


Содержание

Сообщения в этом обсуждении
"как ограничить потребление виртуальной памяти в приложении"
Отправлено Serega_S , 09-Июн-06 09:48 
pmap даёт такую картину:

27099:   ./govorilka
08048000    148K r-x--  /data/work/Linux/work_c/network/govorilka/client/govorilka
0806d000      4K rw---  /data/work/Linux/work_c/network/govorilka/client/govorilka
0806e000    564K rw---    [ anon ]
b4d52000      4K -----    [ anon ]
b4d53000   8192K rw---    [ anon ]
b5553000      4K -----    [ anon ]
b5554000   8192K rw---    [ anon ]
b5d54000      4K -----    [ anon ]
b5d55000   8192K rw---    [ anon ]
b6555000      4K -----    [ anon ]
b6556000   8192K rw---    [ anon ]
b6d56000      4K -----    [ anon ]
b6d57000   8192K rw---    [ anon ]
b7557000      4K -----    [ anon ]
b7558000   8192K rw---    [ anon ]
b7d58000     20K r-x--  /lib/libgpm.so.1.19.0
b7d5d000      4K rw---  /lib/libgpm.so.1.19.0
b7d5e000    224K r-x--  /lib/libncurses.so.5.4
b7d96000     32K rw---  /lib/libncurses.so.5.4
b7d9e000      4K rw---    [ anon ]
b7d9f000     48K r-x--  /data/work/Linux/work_c/network/govorilka/client/modules/mpi_ncurses/mpi_ncurses.so
b7dab000      4K rw---  /data/work/Linux/work_c/network/govorilka/client/modules/mpi_ncurses/mpi_ncurses.so
b7dac000      8K rw---    [ anon ]
b7dae000   1092K r-x--  /lib/libc-2.3.5.so
b7ebf000      4K r----  /lib/libc-2.3.5.so
b7ec0000     12K rw---  /lib/libc-2.3.5.so
b7ec3000      8K rw---    [ anon ]
b7ec5000     32K r-x--  /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/libgcc_s.so.1
b7ecd000      4K rw---  /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/libgcc_s.so.1
b7ece000    132K r-x--  /lib/libm-2.3.5.so
b7eef000      8K rw---  /lib/libm-2.3.5.so
b7ef1000    784K r-x--  /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/libstdc++.so.6.0.3
b7fb5000     20K rw---  /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/libstdc++.so.6.0.3
b7fba000     20K rw---    [ anon ]
b7fbf000      8K r-x--  /lib/libdl-2.3.5.so
b7fc1000      8K rw---  /lib/libdl-2.3.5.so
b7fc3000      4K rw---    [ anon ]
b7fc4000     56K r-x--  /lib/libpthread-2.3.5.so
b7fd2000      4K r----  /lib/libpthread-2.3.5.so
b7fd3000      4K rw---  /lib/libpthread-2.3.5.so
b7fd4000      8K rw---    [ anon ]
b7fd7000     36K r-x--  /data/work/Linux/work_c/network/govorilka/client/modules/mproto_tcp/mproto_tcp.so
b7fe0000      4K rw---  /data/work/Linux/work_c/network/govorilka/client/modules/mproto_tcp/mproto_tcp.so
b7fe1000     84K r-x--  /lib/ld-2.3.5.so
b7ff6000      4K r----  /lib/ld-2.3.5.so
b7ff7000      4K rw---  /lib/ld-2.3.5.so
bfbe1000     84K rw---    [ stack ]
ffffe000      4K -----    [ anon ]
total    52664K

Вот что это за куски по 8 Мб? Я так думаю это на каждый поток тратиться... Но 8 Мб... Не слишком ли много?


"как ограничить потребление виртуальной памяти в приложении"
Отправлено daff , 14-Июл-06 12:19 
>./govorilka
>на каждый поток тратиться... Но 8 Мб... Не слишком ли много?

если libc с NPTL то

ulimit -s 256
./govorilka