4 votes

Fuite de mémoire en Perl avec l'opérateur match

En recherchant des fuites de mémoire dans un programme perl de longue durée, j'ai essayé d'utiliser Test::LeakTrace .

En regardant l'une des fuites qu'il signale, je peux réduire le code de la fuite à seulement :

/$?/

Donc, la course à pied : perl -MTest::LeakTrace::Script -e'/$?/' empreintes :

leaked SCALAR(0x10d3d48) from -e line 1.

Pourquoi ? Dois-je m'en préoccuper ?

Mise à jour : A également essayé Devel::LeakTrace::Fast il ne se plaint pas du même code.

2voto

alexsergeyev Points 505

En supposant qu'il y ait une fuite. Ensuite, voici ce qu'il faut faire :

perl -e'/$?/ for 1..1E9'

devrait faire croître la mémoire de votre processus

 ps -o rss,vsz <PID>

Dans mon cas, il reste stable jusqu'au bout. Vous devriez vérifier si c'est le cas pour votre installation. Il se peut que la fuite détectée par votre module soit une destruction tardive. Vous pourriez écrire une note aux auteurs du module pour qu'ils vous aident à comprendre sa sortie, vous pourriez les aider à l'améliorer...

BTW : un autre élément confirmant l'absence de fuite pour moi est le fait que sur

 perl -MTest::LeakTrace::Script -e'/$?/ for 1..1000'

Je ne vois pas de fuites multiples de scalaires, mais une seule.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X