Я использую ActiveState Perl 5.6 на Windows 2003 Server, и у меня возникают проблемы с утечкой памяти. Есть ли какие-нибудь хорошие инструменты (или даже плохие инструменты, которые дадут ключ к разгадке), которые я мог бы использовать, чтобы их найти.





Все утечки памяти программ Perl будут либо XS, удерживающими ссылку, либо циклической структурой данных. Devel :: Cycle - отличный инструмент для поиска циклических ссылок, если вы знаете, какие структуры могут содержать циклы. Devel :: Peek можно использовать для поиска объектов с большим, чем ожидалось, счетчиком ссылок.
Если вы не знаете, где еще искать, Devel :: LeakTrace :: Fast может быть хорошим первым местом, но вам понадобится perl, созданный для отладки.
Если вы подозреваете, что утечка находится внутри XS-пространства, это намного сложнее, и Валгринд, вероятно, будет вашим лучшим выбором. Тест :: Valgrind может помочь вам уменьшить объем кода, который вам нужен для поиска, но это не будет работать в Windows, поэтому вам придется перенести (по крайней мере, утечку) на Linux, чтобы сделать это.
Devel :: Гладиатор покажет вам список того, сколько переменных каждого типа Perl имеет в памяти в любой момент времени, и на что они ссылаются. Очень полезно для выяснения, какие типы объектов создаются, но не освобождаются.
Поскольку это еще не упоминалось, Devel :: Size сообщит размер структуры данных. Никакой другой информации не предоставляется, и правила, которые она использует для определения «границы» вашей структуры данных, непрозрачны. Для простых конструкций это не проблема.
Devel :: SizeMe - это мой хобби-проект, целью которого является решение проблем Devel :: Size и обеспечение визуализации использования памяти весь интерпретатором Perl. См. мой блог для дополнительной информации, включая ссылки на скринкасты и видео. Одна из моих целей - обеспечить обнаружение и визуализацию утечек, но это еще далеко.
Обновления:
В дополнение к другим комментариям вам может быть полезен мой Обсуждение использования памяти Perl на LPW2013. Я бы порекомендовал посмотреть скринкаст, поскольку он объясняет слайды, имеет симпатичные визуальные эффекты и некоторые вопросы и ответы в конце.
Я также предлагаю взглянуть на модуль Пола Эванса Devel :: MAT, о котором я упоминал в докладе.