Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: Was pasiert mit Speicherlecks

  Alt 4. Dez 2006, 15:26
Zitat von Corpsman:
Denn dann würde sich der Ram ja nicht "Zumüllen" lassen.
Hi,
dass ist gar nicht möglich. Die Ram-Überwachungtools werden wohl von den Ram-Entmüller-Tool-Herstellern produziert. Speicher wird von einem Prozess erzeugt und mit dessen Ende auch wieder freigegeben. Der Mediaplayer (und ein paar andere Programme) sind dabei etwas tiefer in das System von Windows verankert. So findet man einige Programme wie den IE oder eben MediaPlayer, die sehr viel flinker als die Konkurrenz starten, weil sie zum Teil beim Start vorgeladen werden (bzw. einzelne Bibliotheken, die mehrere Prozesse verwenden können). Natürlich sieht es dann bei der Freigabe ähnlich aus, ein paar Dinge, die auch für den nächsten Start benötigt werden können bleiben einfach mal im Speicher.

Mit statischen Variablen hat das mal gar nichts zu tun. In eigenen Programmen kann man sicher sein, dass spätestens mit dem Ende des Programms aller allozierter Speicher wieder als frei markiert wird. Der Nachteil daran Speicher nicht selbst frei zu geben (ein Speicherleck zu erzeugen) besteht einfach darin, dass der Speicher unnötig lange belegt ist. Gerade Windows98 hat hier gerne eine feste Grenze des virtuellen Speichers, was dann dazu führt, dass man den erwähnten Fehler sieht. Aber auch modernere Betriebssysteme profitieren nicht von Speicherleichen. Hast du z.B. viele Bilder die geöffnet werden oder Videos, so wird der RAM schnell gefüllt. Bei der Freigabe des hier allozierten Speichers kann dieser Bereich nun für andere Variablen verwendet werden. Vergisst man dies, muss erst das alte Datum aus dem Ram verdrängt werden (und Festplattenzugriffe kosten Zeit) und erst dann kann eine andere Variable den phy. RAM verwenden. Endet der Prozess, wird hier nun der komplette belegte Speicher frei gegeben (eben auch der virtuelle, der evtl. unnötig verdrängt wurde).

Wichtig ist es eigentlich nur zu wissen, dass Windows sich um den tatsächlich belegten Speicher kümmert. Wer wirklich im phy. RAM und wer im virtuellen landet ist alles Sache des OS. Es gibt da kaum Möglichkeiten Einfluss darauf zu nehmen. Dass es hier keine Engpässe gibt liegt an wirklich gut arbeitetenden Systemen, die sich u.A. halt merken wer welchen Speicher reserviert und diesen damit freigeben können, wenn der entsprechende Prozess nicht mehr läuft.

Gruß Der Unwissende
  Mit Zitat antworten Zitat