Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8061[/thread]

Speicherausnutzung anzeigen

Leser: 1


<< >> 3 Einträge, 1 Seite
nemro
 2006-06-07 19:51
#67043 #67043
User since
2006-06-07
1 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe ein Problem mit einem Perl-Script.
Das Script reserviert während seiner Laufzeit
immer mehr Speicher. Es scheint sich hierbei
um ein Memory leak zu handeln.

Da es sich um ein relativ
komplexes Script handelt, d.h.,
es werden verschiedene externe
Scripts und Klassen eingebunden,
ist es relativ schwierig, herauszubekommen
was diese steigende Speicherausnutzung
verursacht.

Meine Frage: Gibt es eine Möglichkeit unter Perl
sich anzeigen zu lassen, welche Variablen und Arrays
welchen Speicher belegen?

MfG. nemro
renee
 2006-06-07 19:59
#67044 #67044
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mit CPAN:Devel::Size kannst Du Dir ausgeben lassen, welche Variable wieviel Speicher benötigt...

Edit: CPAN:Devel::Monitor scheint auch brauchbar zu sein...\n\n

<!--EDIT|renee|1149701454-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ptk
 2006-06-07 22:27
#67045 #67045
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Weiterhin in der Liga: Devel::Leak. Damit kann man feststellen, ob sich die Anzahl aller belegten Skalare vorher und nachher geändert hat.

Gerne benutze ich auch strace, um Memory-Leaks zu entdecken. Jeder Aufruf von "break" ist die Folge einer malloc-Anweisung.

Was tatsächlich fehlt, ist ein Snapshot eines laufenden Perl-Prozesses, also z.B. 10MB werden von Package A::B belegt etc. Aber vielleicht kann man mithilfe von Devel::Symdump und Devel::Size etwas dergleichen bauen, wenigstens für globale Symbole?

Vielleicht ist auch gar nicht Perl schuld? Letztens habe ich beim Memory-Leak-Suchen im ldirectord (ein Perl-Skript) des "Linux High Availablitity"-Systems entdeckt, dass libc von Debian einen Bug hat.
<< >> 3 Einträge, 1 Seite



View all threads created 2006-06-07 19:51.