2008-11-17 6 views

Répondre

13

Toutes les fuites de mémoire de programme perl seront soit un maintien XS sur une référence, ou une structure de données circulaire. Devel::Cycle est un excellent outil pour trouver des références circulaires, si vous savez quelles structures sont susceptibles de contenir les boucles. Devel::Peek peut être utilisé pour rechercher des objets avec un nombre de références plus élevé que prévu.

Si vous ne savez pas où chercher, Devel::LeakTrace::Fast pourrait être une bonne première place, mais vous aurez besoin d'un perl construit pour le débogage.

Si vous pensez que la fuite est à l'intérieur de l'espace XS, c'est beaucoup plus difficile et Valgrind sera probablement votre meilleur choix. Test::Valgrind peut vous aider à réduire la quantité de code dont vous avez besoin de chercher, mais cela ne fonctionnera pas sur Windows, donc vous devrez porter (au moins la partie qui fuit) vers Linux pour faire cela.

5

Devel::Gladiator va vous montrer une liste de combien de chaque type de variable Perl a en mémoire à un moment donné, et à quoi ils font référence. Très utile pour déterminer quel type d'objets sont créés mais pas libérés.

4

Comme cela n'a pas encore été mentionné, Devel::Size indiquera la taille d'une structure de données. Aucune autre information n'est donnée et les règles qu'il utilise pour déterminer la «limite» de votre structure de données sont opaques. Pour les structures simples, ce n'est pas un problème.

Devel::SizeMe est un projet passe-temps de la mine qui vise à résoudre les problèmes de Devel :: Taille et permettre la visualisation de l'utilisation de la mémoire entière d'un interpréteur Perl. Voir my blog pour plus d'informations, y compris des liens vers des screencasts et des vidéos. Un de mes objectifs est de permettre la détection et la visualisation des fuites, mais c'est encore loin.

Mises à jour:

Outre les autres commentaires, vous pouvez trouver mon Perl Memory Use talk à LPW2013 utile. Je recommande de regarder the screencast car il explique les diapositives et a des visuels mignons et certains Q & A à la fin.

Je suggère également de regarder Paul Evans Devel::MAT module que je mentionne dans l'entretien.

Questions connexes