Zur Laufzeit: Viele DLLs werden geladen aber nicht entladen?



  • Hallo,

    wenn ich im Visual Studio programmiere, fällt mir immer wieder auf, dass mein Programm viele dynamische Bibliotheken lädt, aber sie nicht wieder entlädt. Wäre es möglich die DLLs wieder zu entladen, wenn sie nicht mehr gebraucht werden, um den Speicherverbrauch meines Programms zu senken?

    "hallo.exe": "C:\Windows\system32\clbcatq.dll" geladen, Cannot find or open the PDB file
    "hallo.exe": "C:\Windows\system32\wbem\wbemprox.dll" geladen, Cannot find or open the PDB file
    "hallo.exe": "C:\Windows\system32\wbemcomn.dll" geladen, Cannot find or open the PDB file
    "hallo.exe": "C:\Windows\system32\ws2_32.dll" geladen, Cannot find or open the PDB file
    "hallo.exe": "C:\Windows\system32\nsi.dll" geladen, Cannot find or open the PDB file
    "hallo.exe": "C:\Windows\system32\cryptsp.dll" geladen, Cannot find or open the PDB file
    "hallo.exe": "C:\Windows\system32\rsaenh.dll" geladen, Cannot find or open the PDB file
    "hallo.exe": "C:\Windows\system32\RpcRtRemote.dll" geladen, Cannot find or open the PDB file
    "hallo.exe": "C:\Windows\system32\wbem\wbemsvc.dll" geladen, Cannot find or open the PDB file
    "hallo.exe": "C:\Windows\system32\wbem\fastprox.dll" geladen, Cannot find or open the PDB file
    "hallo.exe": "C:\Windows\system32\ntdsapi.dll" geladen, Cannot find or open the PDB file
    

    Danke



  • Wie kommst du darauf das VC eine ähnliche Meldung beim Entladen einer DLL ausgeben MUSS ???



  • Chew-Z schrieb:

    Wie kommst du darauf das VC eine ähnliche Meldung beim Entladen einer DLL ausgeben MUSS ???

    Das habe ich ja nicht behauptet. Aber du hast Recht, dass ich angenommen habe, dass die DLLs nicht entladen werden. Das nehme ich an, weil mein Programm Arbeitsspeicher nicht wieder freigibt... 😕



  • Lädt Window seit Vista nicht sogar DLLs oder andere häufig benötigte Daten vor, um den Start von Anwendungen zu beschleunigen?



  • Wenn dein Programm Arbeitsspeicher nicht freigibt, bist du alleine dafür verantwortlich.

    Bist du Programmieranfänger? Dann reich es erstmal den Betriebssystem zu vertrauen, dass er die DLL entläd, falls kein anderes Programm es benutzt.



  • Lollipoops schrieb:

    Lädt Window seit Vista nicht sogar DLLs oder andere häufig benötigte Daten vor, um den Start von Anwendungen zu beschleunigen?

    Ja. Darum auch immer das gebashe wegen dem zusätzlichen Speicherverbrauch.



  • /rant/ schrieb:

    Lollipoops schrieb:

    Lädt Window seit Vista nicht sogar DLLs oder andere häufig benötigte Daten vor, um den Start von Anwendungen zu beschleunigen?

    Ja. Darum auch immer das gebashe wegen dem zusätzlichen Speicherverbrauch.

    Nein! Ganz sicher nicht in dem Sinn dass es irgendwelche DLLs in einen PROZESS laden würde. Und darum geht's hier ja wohl.

    @Baur:
    Wieso sollten DLLs entladen werden, was sollte das bringen? Wenn du das Programm beendest ist sowieso der ganze Prozess weg, und damit automatisch alle DLLs entladen.



  • Und solange das Programm läuft und die DLL nicht durch Code selbst geladen werden (dann kann man sie auch entladen) weiß das Programm ja nicht das es die DLL nicht mehr braucht solange das Programm läuft.
    Abgesehen davon ist nicht sicher das die DLL überhaupt geladen werden.
    Es kann sein das die schon durch ein anderes Programm geladen sind. Ist ja auch der Sinn einer DLL das sie sich nur einmal im Speicher befindet solange 2 Programm eine DLL aus dem gleichen Ordner brauchen.


Anmelden zum Antworten