J'utilise ActiveState Perl 5.6 sur un serveur Windows 2003 et j'ai quelques problèmes de fuite de mémoire. Y a-t-il de bons outils (ou même de mauvais outils qui donneraient un indice) que je pourrais utiliser pour les aider à les trouver?Existe-t-il des outils pour détecter les fuites de mémoire dans mon programme Perl?
Répondre
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.
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.
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.
- 1. Comment puis-je trouver des fuites de mémoire dans mon programme Python?
- 2. UIViews associés à des fuites de mémoire
- 3. Détection des fuites de mémoire dans ActionScript-3 Project
- 4. Fuites de mémoire dans C# WPF
- 5. Suivre les fuites de mémoire dans un script Ruby
- 6. Les délégués et les fuites de mémoire dans l'iPhone?
- 7. Prévention des fuites de mémoire AJAX
- 8. delete [] et fuites de mémoire
- 9. cfnetwork fuites de mémoire dans l'iPhone
- 10. Les fuites de mémoire statiques EventHandler dans le framework
- 11. Dépannage Grailles/Fuites de mémoire Groovy?
- 12. Comment importer des paramètres d'environnement dans mon programme Perl?
- 13. Fuites de mémoire dans le cacao
- 14. contrôleur uiimagepickerview créant des fuites de mémoire dans l'iphone - pourquoi?
- 15. Comment repérer les fuites de mémoire dans le profileur?
- 16. Sur JQuery, les fermetures et les fuites de mémoire possibles
- 17. Comment détecter une fuite de mémoire?
- 18. Quels sont les bons outils pour mesurer les allocations de mémoire sous Windows?
- 19. Mémoire de fuites de données de base?
- 20. Quels sont les outils de couverture de code pour Perl?
- 21. Profilage d'utilisation de la mémoire Perl et détection de fuite?
- 22. Combien de temps les fuites de mémoire peuvent-elles persister dans les programmes RPGLE?
- 23. G ++ outil de détection de fuites de mémoire multi-plateforme
- 24. Comment faire pour détecter par programme les fichiers supprimés?
- 25. Comment vérifier les fuites de mémoire dans les modules d'extension Guile?
- 26. Comment traiter les objets statiques lors de la surcharge et de la suppression pour trouver des fuites de mémoire?
- 27. Pourquoi ma mémoire Python C Extension des fuites?
- 28. Comment activer le suivi des fuites de mémoire avec FastMM dans DUnit?
- 29. Pourquoi mon journal Perl utilise-t-il autant de mémoire?
- 30. Comment disposer des éléments DOM en JavaScript pour éviter les fuites mémoire