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

dauerprogramm - speicherauslastung nimmt zu



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
Annka
 2006-12-11 16:45
#72463 #72463
User since
2006-07-18
43 Artikel
BenutzerIn
[default_avatar]
hallo,

ich habe folgendes problem:
ich habe ein programm welches immer im hintergrund läuft als prozess. wenn das programm etwas tut, nimmt die speicherauslastung zu. dann wenn das programm nichts mehr tut nimmt die speicherauslastung nicht ab, sondern hält diesen wert.
ich möchte gerne, dass nachdem das programm fertig mit seiner arbeit ist und wieder im hintergrund läuft, dass es wieder zur alten speicherauslastung zurückkehrt.

ich hoffe ihr versteht was ich meine und helft mir das problem zu lösen.
renee
 2006-12-11 16:54
#72464 #72464
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Einmal genommener Speicher wird während der Laufzeit nicht mehr ans Betriebssystem zurückgegeben. Das einzige was hilft, ist den den Scope (Gültigkeitsbereich) von Variablen so klein wie möglich zu halten.
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/
Annka
 2006-12-11 17:04
#72465 #72465
User since
2006-07-18
43 Artikel
BenutzerIn
[default_avatar]
heißt das jetzt, dass alle variablen nach dem gebrauch wieder zurückgesetzt werden sollen?

geht das mit undef?

oder wie ist das gemeint mit dem scope?
bloonix
 2006-12-11 17:12
#72466 #72466
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=renee,11.12.2006, 15:54]Das einzige was hilft, ist den den Scope (Gültigkeitsbereich) von Variablen so klein wie möglich zu halten.[/quote]
Das hilft leider auch nicht.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
Annka
 2006-12-11 17:14
#72467 #72467
User since
2006-07-18
43 Artikel
BenutzerIn
[default_avatar]
gibt es sonst eine lösung? :D
bloonix
 2006-12-11 17:35
#72468 #72468
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Ja klar gibt es Lösungen. Wenn es ein Prozess ist, der unbedingt Non-Stop
laufen muss, dann könntest du den Prozess preforken. Ob der Childprozess
mit seiner Arbeit erfolgreich war, kannst du entweder am Signal des
Prozesses herausfinden, mit dem er sich beendet hat oder aber du
erstellt eine PIPE, über die beide Prozesse miteinander kommunizieren.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
Annka
 2006-12-11 17:41
#72469 #72469
User since
2006-07-18
43 Artikel
BenutzerIn
[default_avatar]
okay danke :)
renee
 2006-12-11 17:59
#72470 #72470
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=opi,11.12.2006, 16:12][quote=renee,11.12.2006, 15:54]Das einzige was hilft, ist den den Scope (Gültigkeitsbereich) von Variablen so klein wie möglich zu halten.[/quote]
Das hilft leider auch nicht.[/quote]
Wieso nicht? Wenn eine Variable aus dem Scope fällt, wird der Speicherplatz "frei" und Perl nimmt diesen Speicherplatz nochmal...
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/
bloonix
 2006-12-11 18:26
#72471 #72471
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=renee,11.12.2006, 16:59]Wieso nicht? Wenn eine Variable aus dem Scope fällt, wird der Speicherplatz "frei" und Perl nimmt diesen Speicherplatz nochmal...[/quote]
Hmmm... ich denke mal, dass das nicht die Frage des Threaderstellers war.

Es soll der Speicher ans Betriebssystem zurück gegeben werden, was nicht
der Fall ist. Ich habe mal zum Test eine 100 MB Datei eingelesen, in einem
eigenen Scope, sogar ein undef() durchgeführt und die Programm-
groesse wird danach nicht geringer.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2006-12-11 18:35
#72472 #72472
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Habe ich ja geschrieben, dass Speicher nicht an das Betriebssystem zurückgegeben wird. Aber kleine Scopes können den Speicherverbrauch insofern drücken, dass nicht für jede Datei komplett neuer Speicher verwendet wird, sondern z.T. "alter" Speicher verwendet wird.

Wenn Du erst 100MB brauchst, und dann nochmal 100MB, dann macht das 200MB.

Wenn Du aber erst 100MB brauchst, dann intern 40MB freigibst, und dadurch dann nur noch 60MB Speicher zusätzlich brauchst, liegst Du bei insgesamt 160MB (was weniger ist als 200MB).

Wenn es kein Dauerhafter Prozess sein muss, sondern in regelmäßigen Abständen laufen muss, reicht es ja auch, wenn ein Cronjob eingerichtet wird. Da dann das Programm immer wieder beendet wird, wird der Speicher auch ans Betriebssystem zurückgegeben.
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/
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2006-12-11 16:45.