A
aktiv
Grünschnabel
Hallo Leute,
sitze an einem Problem mit Perl Threads.
Ich habe ein Perl Programm geschrieben das eine Menge Threads erzeugt. Die Threads werden alle nacheinander abgearbeitet, soweit sogut...
Das Problem liegt nun darin, das jeder Thread sich automatisch ca. 8MB Arbeitsspeicher gönnt und diesen nach dem Durchlauf auch nicht wieder freigibt.
Dh -> mit jedem neuen Thread + 8MB Arbeitsspeicher sind dann schon nach ca 200 Threads 1600Mb...
hier einamal der Beispielhafte Programmcode
Nachdem ein Thread durchlaufen ist soll nun der gesamte Speicher dieses Threads wieder freigegeben werden. Dies klappt aber irgendwie nicht. Hab da schon verschiedene Sachen ausprobiert gegooglet usw....
Das Problem wird öfters angeschnitten, aber adequate Lösungen gibt es nciht. Oder ich bin zu doof dazu![Smilie :) :)](/styles/default/xenforo/smilies-ub/smile.gif)
Die DESTROY Funktion soll woll ein Weg sein, aber wo die hinsoll ist mir ein Rätsel.
oder einfach sowas
geht auch nicht![unglücklich :( :(](/styles/default/xenforo/smilies-ub/frown.gif)
Vielleicht hat ja einer eine Idee...
Grüße an alle!
sitze an einem Problem mit Perl Threads.
Ich habe ein Perl Programm geschrieben das eine Menge Threads erzeugt. Die Threads werden alle nacheinander abgearbeitet, soweit sogut...
Das Problem liegt nun darin, das jeder Thread sich automatisch ca. 8MB Arbeitsspeicher gönnt und diesen nach dem Durchlauf auch nicht wieder freigibt.
Dh -> mit jedem neuen Thread + 8MB Arbeitsspeicher sind dann schon nach ca 200 Threads 1600Mb...
hier einamal der Beispielhafte Programmcode
Code:
#!/usr/bin/perl
use threads;
use threads::shared;
foreach my $inArbeit(1...200)
{
my $t = threads->new(\&threadMain, $inArbeit);
}
sub threadMain {
#...
return 1;
}
Nachdem ein Thread durchlaufen ist soll nun der gesamte Speicher dieses Threads wieder freigegeben werden. Dies klappt aber irgendwie nicht. Hab da schon verschiedene Sachen ausprobiert gegooglet usw....
Das Problem wird öfters angeschnitten, aber adequate Lösungen gibt es nciht. Oder ich bin zu doof dazu
![Smilie :) :)](/styles/default/xenforo/smilies-ub/smile.gif)
Die DESTROY Funktion soll woll ein Weg sein, aber wo die hinsoll ist mir ein Rätsel.
oder einfach sowas
Code:
undef $t;
![unglücklich :( :(](/styles/default/xenforo/smilies-ub/frown.gif)
Vielleicht hat ja einer eine Idee...
Grüße an alle!