![]() |
|< 1 2 3 >| | ![]() |
26 Einträge, 3 Seiten |
Struppi+2007-11-14 11:36:37--Ich hab noch nie mit mod_perl gearbeitet, aber das klingt als ob du von mod_perl abrätst?
Quote[...]
Das klingt einerseits nach einem globalen Objekt. Ist es unter mod_perl nicht sinnvoll dieses im Speicher zu halten, bzw. ist das nicht der Vorteil von mod_perl, das eben nicht immer alles neu geladen wird?
QuoteGleichzeitig klingt das aber wieder nicht nach einem globalen Objekt (wg. $self) und dann wird es sowieso automatisch "gelöscht" (gelöscht stimmt ja nur bedingt) wenn es nicht mehr benötigt wird.
Quote
Mir stellt sich die Frage, warum es sinnvoll sein soll ein Objekt von Hand zu löschen, dass sowieso gelöscht wird? Und selbst wenn es relativ viel speicher belegt, wird das löschen nicht unbedingt einen folgenden Prozess beschleunigen, da das löschen schon Zeit kosten kann, eher verlangsamen.
Quote... aber es *kann* durchaus Sinn machen, das Objekt selbst zu "zerstören" und somit den Speicher (intern) freizugeben (wenn keine anderen Referenzen auf die Daten vorhanden sind). Zum einen kann man so zirkuläre Referenzen zerstören und zum anderen kann man extrem hohen Speicherverbrauch vermeiden.
Struppi+2007-11-14 12:34:52--das sehe ich genauso...Danke, für die Ausführungen, das entspricht ungefähr dem wie ich das bisher verstanden habe.
Nur das Letzte will mir nicht so recht in den Sinn, vor allem im Kontext der Frage:
Quote... aber es *kann* durchaus Sinn machen, das Objekt selbst zu "zerstören" und somit den Speicher (intern) freizugeben (wenn keine anderen Referenzen auf die Daten vorhanden sind). Zum einen kann man so zirkuläre Referenzen zerstören und zum anderen kann man extrem hohen Speicherverbrauch vermeiden.
Froschpopo hat in seine Frage ja $self eingebaut, was i.d.R. ja der Parameter ist, der auf das aktuelle Objekt zeigt, dass würde ich auf jeden Fall nie im Modul zerstören, sondern dann dort wo das Objekt verwendet wird.
QuoteDas Andere ist, wenn man denkt man hat ein Problem mit hängenden Referenzen, ist es da nicht günstiger explizit in DESTROY zu zerstören?
Oder sowas wie Scalar::Util::weaken zu verwenden?
QuoteIch wundere mich halt über die Fragestellung, mir ist diese in 10 Jahren Perlprogrammierung noch nicht über den Weg gelaufen. Ich hatte schon Probleme mit tie, wo ich explizit mit undef Verbindungen trennen musste oder das DESTROY was sinnvolles machen muss, aber ein undef irgendwo im Code, weil ich dachte ich müßte Speicher sparen ist zumindest mir persönlich noch nicht über den Weg gelaufen.
1
2
3
4
5
6
7
8
9
10
11
SV = IV(0x52c970) at 0x529a58
REFCNT = 1
FLAGS = (IOK,pIOK)
IV = 123
SV = PVIV(0x507848) at 0x529a58
REFCNT = 1
FLAGS = (IOK,POK,pIOK,pPOK)
IV = 123
PV = 0x508848 "123"\0
CUR = 3
LEN = 8
![]() |
|< 1 2 3 >| | ![]() |
26 Einträge, 3 Seiten |