обнаружить утечку памяти с помощью htop - PullRequest
4 голосов
/ 17 мая 2011

ребята, я создал приложение, которое состоит из библиотеки GTK + и некоторого связанного списка на нем

, и когда я вижу ресурсы через htop, оно выглядело так:

    1  [||||||||||||||||||||||                                                             24.4%]     Tasks: 117, 163 thr; 1 running
  2  [||||||||||||||||||||                                                               21.8%]     Load average: 0.22 5.09 7.51 
  Mem[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||               330/2003MB]     Uptime: 6 days, 02:09:22
  Swp[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||  220/254MB]

  PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 1843 rahulyud  20   0 94496  9296  5596 S 17.0  0.5  0:57.59 gnome-terminal
 1118 root      20   0 41112  8556  2612 S 14.0  0.4 25h13:05 /usr/bin/X :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-ubcbQV/database -nolisten tcp vt7
 3035 root      20   0  2808  1468  1056 R  5.0  0.1  0:11.30 htop
 1563 rahulyud  20   0  265M 19400  6792 S  4.0  0.9 12h17:58 compiz
 2594 rahulyud  20   0  373M 25064 10316 S  1.0  1.2  0:13.75 /home/rahulyudi/NetBeansProjects/mm/trunk/dist/Debug/GNU-Linux-x86/trunk

к сожалению, я не очень знаком с unix htop - все, мое приложение работает с pid 2594, но кажется, что VIRT слишком дорогие ресурсы -> 373M, думал, что это 373 мегабайт , я прав ?в любом случае, это нормальный размер?

что на самом деле означает VIRT, RES, SHR?как определить, что ресурсы моего приложения памяти по этим символам?

спасибо заранее;)

Ответы [ 3 ]

6 голосов
/ 17 мая 2011

Это не команда ps. Это команда top или htop. У вас есть набор псевдонимов?

Столбец VIRT - это все виртуальная память и файлы страниц, связанные с задачей, включая библиотеки и память, выделенную, но не использованную. RES - это физическая память, используемая в настоящее время. SHR - это память, которую можно использовать совместно с другими процессами, например общими библиотеками.

Для получения дополнительной информации или подробностей об этих командах введите:

человек топ

В вашем терминале. Затем вы можете использовать / для поиска вашего текста.

EDIT:

Вкратце, для тех, кто сталкивается с этим позже, я обнаружил на свежем мясе программу под названием memtime, которая позволяет вам видеть память, используемую для запускаемой вами команды. Это решит вашу проблему без необходимости вручную смотреть программу с помощью htop.

2 голосов
/ 30 июня 2013

VIRT обозначает виртуальный размер процесса, который представляет собой сумму памяти, которую он фактически использует, память, которую он сопоставил с собой (например, ОЗУ видеокарты для X-сервера), файлы на диске, которые были сопоставлены в него (прежде всего разделяемые библиотеки) и память, совместно используемую с другими процессами. VIRT показывает, сколько памяти программа может получить в настоящий момент. RES обозначает резидентный размер, который является точным представлением того, сколько фактической физической памяти потребляет процесс. (Это также напрямую соответствует столбцу% MEM.) Это практически всегда будет меньше, чем размер VIRT, так как большинство программ зависят от библиотеки C.

SHR указывает, какая часть размера VIRT фактически является разделяемой памятью или библиотеками). В случае библиотек это не обязательно означает, что вся библиотека является резидентной. Например, если программа использует только несколько функций в библиотеке, вся библиотека отображается и будет учитываться в VIRT и SHR, но только части файла библиотеки, содержащие используемые функции, будут фактически загружены и подсчитаны под RES.

2 голосов
/ 18 мая 2011

Утечки памяти по определению не могут быть обнаружены одним снимком.Когда вы теряете память, ваш процесс использует больше памяти с течением времени .Хотя виртуальная 373M может показаться высокой, если вы не получаете все больше и больше памяти без выполнения приложением каких-либо действий, которые могут увеличить использование памяти, вы не можете сказать, что у вас есть утечка.Если вы подозреваете, что у вас есть утечка, вы можете попробовать использовать Valgrind .

...