Random_Walk has asked for the wisdom of the Perl Monks concerning the following question:
Morning all
I am having problems with my multithreaded tcp listener with IO::Socket. It is leaking memory even after applying the good advice from BrowserUk. I suspect it may be a problem with the Thread::Queue. Here is a simple script that shows the problem (unixy 'cos of ps command, strip that out and use taskmangler to see it on windows).
Here is a snatch of output ...#!/usr/bin/perl use strict; use warnings; use threads; use Thread::Queue; my $queue = Thread::Queue -> new; threads -> create ("popper", $queue) -> detach for (1..10); my $message="this is a line of test around the right size"; while (1) { $queue -> enqueue ($message) for (1..100); sleep 1 while $queue -> pending; print $/,`ps -eo vsize,args | grep $0 | grep -v grep`; } sub popper { print "started a popper\n"; my $queue = shift; while ($queue -> dequeue) { print "."; } }
6300 /usr/bin/perl ./threadtest.pl ...................................................................... +.............................. 6316 /usr/bin/perl ./threadtest.pl ...................................................................... +.............................. 6340 /usr/bin/perl ./threadtest.pl ...................................................................... +.............................. 6364 /usr/bin/perl ./threadtest.pl ...................................................................... +.............................. 6408 /usr/bin/perl ./threadtest.pl ...................................................................... +..............................
Is this because a variable on the queue is being made shared between all threads and never going out of scope ? If so is this fixable or an imutable feature of thread queues ?
Cheers,
R.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: memory leak with Thread::Queue ?
by BrowserUk (Patriarch) on May 16, 2006 at 10:04 UTC | |
by Anonymous Monk on Sep 18, 2009 at 22:04 UTC | |
by BrowserUk (Patriarch) on Sep 18, 2009 at 22:24 UTC | |
|
Re: memory leak with Thread::Queue ?
by dave_the_m (Monsignor) on May 16, 2006 at 09:05 UTC | |
by Random_Walk (Prior) on May 16, 2006 at 13:14 UTC |