Estoy usando ActiveState Perl 5.6 en un servidor de Windows 2003, y estoy teniendo algunos problemas de pérdida de memoria. ¿Hay buenas herramientas (o incluso malas herramientas que darían una pista) que podría utilizar para ayudar a encontrarlas?¿Hay alguna herramienta para encontrar pérdidas de memoria en mi programa Perl?
Respuesta
Todas las fugas de memoria del programa perl serán un XS que se aferra a una referencia, o una estructura de datos circular. Devel::Cycle es una gran herramienta para encontrar referencias circulares, si sabe qué estructuras es probable que contengan los bucles. Devel::Peek se puede usar para encontrar objetos con un recuento de referencias mayor al esperado.
Si no sabe dónde más buscar, Devel::LeakTrace::Fast podría ser un buen primer lugar, pero necesitará un perl creado para la depuración.
Si sospecha que la fuga está dentro del espacio XS, es mucho más difícil, y Valgrind será probablemente su mejor opción. Test::Valgrind puede ayudarlo a reducir la cantidad de código que necesita para buscar, pero esto no funcionará en Windows, por lo que tendría que realizar un puerto (al menos la parte con fugas) a Linux para hacerlo.
Devel::Gladiator le mostrará una lista de cuántos de cada tipo de variable Perl tiene en memoria en un momento dado, y a qué se refieren. Muy útil para averiguar qué tipo de objetos se crean pero no se liberan.
Dado que no se ha mencionado aún, Devel::Size informará el tamaño de una estructura de datos. No se proporciona ninguna otra información y las reglas que utiliza para determinar el 'límite' de su estructura de datos son opacas. Para estructuras simples esto no es un problema.
Devel::SizeMe es un proyecto de mis aficiones que tiene como objetivo resolver los problemas de Devel :: El tamaño y permitir la visualización de todo el uso de la memoriade un intérprete de Perl. Consulte my blog para obtener información adicional, incluidos enlaces a screencasts y videos. Uno de mis objetivos es permitir la detección y visualización de fugas, pero eso aún está lejos todavía.
actualizaciones:
Además de los otros comentarios, es posible encontrar mi Perl Memory Use talk en LPW2013 útil. Recomiendo ver the screencast ya que explica las diapositivas y tiene algunas imágenes lindas y algunos Q & A al final.
También sugiero mirar el módulo Paul Evans Devel::MAT que menciono en la charla.
- 1. ¿Cómo puedo encontrar pérdidas de memoria en mi programa Python?
- 2. ¿Cómo puedo encontrar pérdidas de memoria en el programa Perl de larga ejecución?
- 3. ¿Qué herramienta debo usar para encontrar mi asignación de memoria en Perl?
- 4. ¿Utilizará goto para causar pérdidas de memoria?
- 5. Herramientas para pérdidas de memoria en .Net ejecutable
- 6. pérdidas de memoria en Microsoft.FSharp.Control.Mailbox?
- 7. SoundPlayer provocando pérdidas de memoria?
- 8. ¿Hay alguna forma de evitar las pérdidas de memoria por falta de implementación en Tomcat?
- 9. ¿hay alguna manera de encontrar la lista de configuraciones regionales válidas en mi Linux utilizando Perl?
- 10. ¿Hay alguna herramienta para actualizar Javadoc automáticamente?
- 11. SBJson - ¿Tiene pérdidas de memoria?
- 12. ¿Hay alguna herramienta XSL Lint?
- 13. ¿Hay alguna herramienta como mecanizar para Android?
- 14. ¿Hay alguna herramienta ORM para Haskell?
- 15. ¿Hay alguna herramienta para verificar las secuencias de comandos de Perl para uso innecesario?
- 16. ¿Hay alguna herramienta como doxygen para XSLT?
- 17. ¿Hay alguna buena herramienta para examinar Makefiles?
- 18. ¿Hay alguna buena herramienta para refactorizar el código web de Perl?
- 19. ¿Hay alguna herramienta para visualizar los objetos que se utilizan en un programa?
- 20. ¿Hay alguna herramienta para encontrar alguna diferencia entre dos proyectos xcode?
- 21. Javascript a pérdidas de memoria
- 22. C#: simular pérdidas de memoria
- 23. ¿Hay alguna herramienta de DRYer por ahí?
- 24. ¿Cómo puedo evitar causar pérdidas de memoria en Firefox?
- 25. ¿Hay alguna herramienta de análisis estático como Lint o Perl :: Critic para scripts de shell?
- 26. ¿Hay alguna convención para escribir comentarios de POD para Perl?
- 27. Evitar pérdidas de memoria Scala - Scala constructores
- 28. ¿Cómo identificar las pérdidas de memoria en Android?
- 29. ¿Hay alguna herramienta de análisis de código que facilitará mi trabajo?
- 30. ¿Cómo puedo acelerar mi programa Perl?