Как вычислить объем памяти, потребляемой программой «C» в linux

Firefox хранит cookie в sqlite базе данных ~/.mozilla/firefox/<profile path>/cookies.sqlite. У Вас может быть полный доступ к нему.

Например, для наблюдения всех cookie из stackoverflow.com можно сделать:

cd  ~/.mozilla/firefox/<profile path>/
sqlite3 cookies.sqlite
select * from moz_cookies where baseDomain glob '*stackoverflow*'

(замените здесь <profile path> путем Вашего профиля Firefox).

Видеть, что названия полей базы данных делают: .schema.

5
03.06.2015, 09:37
4 ответа

Вот размер резидентного множества и размер виртуальной памяти всех процессов sshd на одной системе:

ulric@qvp2:~$ ps -eo rss,vsz,args|grep sshd|grep -v grep
  448  55292 /usr/sbin/sshd -D
 5176 147460 sshd: ulric [priv]
 2776 149704 sshd: ulric@pts/3

Или, возможно, проще:

ulric@qvp2:~$ ps aux|head -n 1&&ps aux|grep sshd|grep -v grep
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     13221  0.0  0.0  55292   448 ?        Ss   Apr21   0:01 /usr/sbin/sshd -D
root     16046  0.0  0.5 147460  5176 ?        Ss   08:12   0:00 sshd: ulric [priv]
ulric    16187  0.0  0.2 149704  2776 ?        S    08:12   0:00 sshd: ulric@pts/3

Смотрите страницу ps manpage для получения дополнительных опций.

3
27.01.2020, 20:34

Это будет зависеть от того, какая статистика вам нужна, но если вы пишете программу на Си, работающую под Linux, вам определённо лучше знать о Valgrind.

Valgrind может не только профилировать детальное использование памяти вашей программы, но и обнаружить нарушения доступа к памяти, которые часто встречаются на Си и, возможно, очень трудно отлаживаются.

В целях профилирования посмотрите документы, посвященные конкретным инструментам анализа, особенно memcheck и massif.

5
27.01.2020, 20:34

Если вас интересует только память, используемая после того, как факт, то используйте GNU время:

command time -v myprogram

(выше используется bash способ вызова внешней команды time, а не встроенная команда bash, ваша оболочка может отличаться).

Или, GNU memusage :

memusage -T ./myprogram

Если вас интересует память, используемая на постоянной основе (т.е. во время длительного процесса), то, вероятно, один из других ответов лучше. См. также этот вопрос: Команда использования памяти с синтаксисом, похожим на временную команду

5
27.01.2020, 20:34

Проще всего просто перехватить указатели кучи через sbrk (0 ), привести их к 64 -битным целым числам без знака и вычислить разницу после выделения памяти.

-2
27.01.2020, 20:34

Теги

Похожие вопросы