DLL entladen

  • hallo zusammen,


    hat jemand einen tipp wie ich mit mortscript bestimmte dll´s entladen kann ?


    wäre für eure hilfe sehr dankbar.


    gruss martin

  • Hi Martin,


    bei Windows-PCs gibt's/gab's in der Registry den Key: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AlwaysUnloadDll, der auf unserer CE-Kiste (natürlich?) nicht vorhanden ist. Allerdings wurde dieser Key auch nur von Windows 9X/NT ausgewertet, MS-Support! :gap
    Nur mal 'ne blöde Idee: leg' den Key doch an und checke mal, was nach Beendigung eines Prg. passiert. :D


    Mit MS kannst Du über das Kill(exe)-Befehl nur einzelne Prg. abschießen oder auch über close (Fenstertitel) (ordentlich) beenden.


    Sorry, mehr weiß ich auch nicht, was ist denn der Hintergrund Deiner Frage?

  • hallo ralf, der hintergrund ist, dass bei dem organizer prg einige dll´s (in der summe fast 1,5 mb) standardmässig von windows geladen werden. wenn ich nun über das menü die navisoftware starte, wird das menü gekillt, allerdings möchte ich auch gerne die unnötigen dll´s aus dem speicher haben. wenn ich die navisoftware schliesse wird das menü wieder neu geladen und da sollten dann auch wieder die dll´s vom organizer geladen werden. keine ahnung ob sowas überhaupt möglich ist und es ist schon nervig, dass überhaupt dll´s geladen weden, obwohl das prg nicht aufgerufnen wurde.


    gruss martin

  • Tja, man wirft Windows ja gerne vor, viel zu viel Schindluder zuzulassen. Bei den DLLs ist das aber nicht ganz so... Wenn eine DLL geladen wird, wird im System ein Zähler hochgesetzt, wieviele Programme darauf zugreifen. Normalerweise sollte der spätestens beim Beenden des Programms auch wieder verringert werden. Andere Programme können den Zähler nicht beeinflussen - sonst gäbe es böse Probleme, wenn ein Programm eine von ihm geladene DLL benutzen möchte.
    Solange der Zähler nicht wieder auf 0 ist, wird der Speicher nicht freigegeben (auf dem Desktop landet die DLL bestenfalls noch im virtuellen Speicher auf der Platte). Da hilft nur noch ein Reset...


    Normalerweise ist das Problem aber eher, dass Windows die DLLs auch ohne Referenzen eine Weile im Speicher lässt, weil es nicht so selten vorkommt, dass das Programm (oder ein anderes) sie kurz darauf doch wieder braucht. Da wäre es reine Zeitverschwendung, erst den Speicher freizugeben, um die DLL dann kurz darauf nochmal laden zu müssen.
    Was manche Tools anbieten, ist, dass sie so viel Speicher wie möglich reservieren und am Ende wieder freigeben. Dadurch wird das System gezwungen, DLLs, die gerade nicht benötigt werden, aus dem Speicher zu werfen. Das bringt dann eine größere Zahl bei der Anzeige des verfügbaren Speichers aber sonst normalerweise nicht viel. Sicher, der Start von großen Anwendungen kann sich ein wenig beschleunigen, weil bereits alles aufgeräumt wurde, aber 1. fällt die Zeit auf modernen Systemen kaum noch ins Gewicht (bei PPCs schon deshalb, weil nichts ausgelagert werden kann) und 2. braucht das Aufräum-Programm mindestens genauso lang (das System muss ja dasselbe machen). Außerdem besteht das Risiko, dass auch DLLs beseitigt werden, die das zu startende Programm danach wieder lädt - in dem Fall wird der Start sogar noch langsamer.

    Einmal editiert, zuletzt von Mort ()

  • hallole
    ..und danke für deine sehr gute beschreibung. dann gibt es also fürs navi keine möglichkeit die dll´s zu entladen ?!


    gruss martin