Как использовать детекторы IE7 Javascript утечки памяти?

CScope действительно работает на Java.

От http://cscope.sourceforge.net/cscope_vim_tutorial.html :

, Хотя Cscope был первоначально предназначен только для использования с кодом C, это - на самом деле очень гибкий инструмент, который работает хорошо с языками как C++ и Java. Можно думать о нем как об универсальной 'grep' базе данных со способностью распознать определенные дополнительные конструкции как вызовы функции и определения переменной. По умолчанию Cscope только анализирует C, закон и yacc файлы (.c.h.l.y) в текущем каталоге (и подкаталоги при передаче флага-R), и в настоящее время нет никакого способа изменить тот список расширений файла (да, мы должны изменить это). Так вместо этого необходимо составить список файлов, что Вы хотите проанализировать, и назвать его 'cscope.files' (можно назвать его чем-либо, что Вы хотите при вызове 'cscope-i foofile'). Легкое (и очень гибкий) способ сделать это через испытанный Unix, 'находят' команду:

find . -name '*.java' > cscope.files

Теперь выполненный 'cscope-b' для восстановления базы данных (-b просто создает базу данных, не запуская GUI Cscope), и Вы будете в состоянии просмотреть все символы в своих файлах Java. По-видимому, существуют люди, там использующие Cscope, чтобы просмотреть и отредактировать большие объемы файлов документации, который показывает, как синтаксический анализатор гибкого Cscope.

7
задан George Jempty 11 August 2009 в 15:46
поделиться

2 ответа

Вот мой собственный опыт работы с sIEve в ок. 24 часа с тех пор, как я задал этот вопрос. Он предоставляет обширные визуальные, хотя и не интерактивные данные, например «только для чтения». Он действительно предоставляет способ «копировать» данные, которые он отображает в различных сетках «Показать», в моем случае «Показать в использовании». Однако объем данных, получаемых при вставке в текстовый документ, выходит далеко за рамки того, что фактически отображается в сетке, и является совершенно большим.

Позвольте мне подробнее рассказать о моем варианте использования. sIEve указывает не на «утечки» как таковые, а скорее на «сироты». Чтобы увидеть, что это означает на языке sIEve, см. эту страницу .

После того, как я использовал браузер sIEve для доступа к интересующей меня странице, я использовал функцию «Показать в использовании» для отображения сетки примерно с 10 или 12 полями. Данные столбца можно сортировать, щелкнув заголовок, поэтому я смог отсортировать по столбцу «Сирота», а затем выбрать диапазон строк, в котором указано «Да», а затем нажать «Копировать»

. Однако я задал этот вопрос в во-первых, потому что Copy либо не работает, либо дает сбой sIEve. Я продолжал сталкиваться с этими проблемами примерно в трети или половине случаев, но оставался постоянным и, наконец, смог вставить необработанные данные в документ.

Как я уже упоминал, количество необработанных данных очень велико. Так что единственное, что я разработал, - это регулярное выражение для подсчета «записей». Каждая запись начинается со строки, например следующей:

http://localhost:8086/yms_web/yardmanager.do    (1 reference)

Она всегда будет указывать количество ссылок, поэтому это регулярное выражение, которое я разработал для поиска этих строк в необработанных данных; обратите внимание, что для этого я использую Cygwin:

$ egrep '\([0-9]+ reference[s]?\)' before_trailer_adjust_clicks.txt
http://localhost:8086/yms_web/yardmanager.do    (5 references)
http://localhost:8086/yms_web/yardmanager.do    (1 reference)
http://localhost:8086/yms_web/yardmanager.do    (2 references)

Как видите, регулярное выражение правильно обрабатывает возможность множественных ссылок; Я не видел, чтобы он обрабатывал случаи, когда есть двузначные ссылки, но я считаю, что это должно быть.

В любом случае, связав приведенный выше вывод с wc -l, вы быстро узнаете, сколько строк у вас есть, поэтому в моем случае , захватив данные из таблицы, где «Сирота» равняется «Да», и выполнив это с помощью последовательных HTTP-запросов, я смог увидеть, как увеличивается количество «сирот», например:

$ egrep '\([0-9]+ reference[s]?\)' before_trailer_adjust_clicks.txt | wc -l
3

$ egrep '\([0-9]+ reference[s]?\)' after_trailer_adjust_click.txt | wc -l
4

$ egrep '\([0-9]+ reference[s]?\)' after_create_rftask_click.txt | wc -l
4

$ egrep '\([0-9]+ reference[s]?\)' after_create_rftask_close.txt | wc -l
66

$ egrep '\([0-9]+ reference[s]?\)' after_trailer_adjust_close.txt | wc -l
163

Конечно, команда egrep могла быть вызывается внутри bash-сценария, перебирающего интересующие файлы, но я еще не зашел так далеко.

Между прочим, это для приложения ExtJS, и я спросил на их форуме, получил хороший совет и смог резко сократить количество детей-сирот!

6
ответ дан 7 December 2019 в 01:24
поделиться

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

JavaScript Memory Leak Detector (v2)

4
ответ дан 7 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

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