2013-10-12 4 views
0

Я использую команду linux top для наблюдения за запущенной программой, и я могу видеть увеличение памяти, используемой этой программой.Различают утечку памяти из фрагментации памяти

Как выяснить, какой симптом вызван утечкой памяти или фрагментацией памяти?

+1

valgrind. ----- – Adam

ответ

1

Ну, вы не можете сделать это, используя команду «top». Единственный способ обнаружить утечку памяти - использовать специальные инструменты отладки, которые называются memory debugger. Одним из примеров является «Valgrind», но их много.

Еще одно соображение - это то, что является программным языком программы. Если это современный язык сценариев с сборщиком мусора, утечки памяти вообще невозможны (конечно, если интерпретатор/компилятор языка не глючит).

В основном, скомпилированные языки относительно низкого уровня подвержены утечкам памяти - например, C, C++, Pascal, Assembly и тому подобное.

+0

Ну, язык программирования - C. – Sayakiss

+0

@Sayakiss - ну, тогда отладчик памяти - это ваш инструмент. Обратите внимание, что большинство отладчиков памяти будут запускать программу очень медленно, потому что они перехватывают все распределения/освобождения памяти и даже трассируют инструкцию программы по инструкции, чтобы отслеживать указатели. Хотя я не специалист в таких программах. – johnfound

+0

@johnfound «Если это современный язык сценариев с сборщиком мусора, утечки памяти вообще невозможны». Это не совсем правильно. Java и Python имеют сборщик мусора, и вы можете легко вызвать утечку памяти при кодировании на этих языках. – abc

Смежные вопросы