Einzelnen Beitrag anzeigen

CCRDude
(Gast)

n/a Beiträge
 
#16

Re: bedarf des Arbeitsspeichers meiner Anwendung verringern

  Alt 10. Mai 2007, 09:20
Die VCL verwendet er ja auch nicht (edit: hat er ja inzwischen auch geschrieben)

Das "Problem" mit dem Entladen dieser DLLs ist: die brauchst Du ja! Zumindest wahrscheinlich zu großen Teilen. Weißt es nur noch nicht Die RTL von Delphi benutzt halt diverse Funktionen aus diesen DLLs. Wenn Du einfach hingehst und einige DLLs entlädst, weißt Du nie, welche Funktionen gerade zufällig davon abhängen... besser also, dafür zu sorgen, daß sie von vorneherein gar nicht erst geladen werden!

Z.B.sehe ich da comctl32.dll und gdi32.dll ... das deutet darauf hin, daß irgendwo noch eine Unit eingebunden ist, die doch noch etwas grafisches veranstalten will. Das kann irgendwo Code sein, der rein theoretisch noch ein MessageBox aufrufen könnte z.B., oder irgend eine indirekt damit zusammenhängende Unit.

Ich etwa hab gerade noch einmal in einigen meiner Kommandozeilenprogramme nachgeschaut: einmal MessageBox plus AppEvents für irgendne Konstante eingebunden ergibt stolze 300 KB mehr (und hat auch den statischen Import jener DLLs bewirkt).

Aber nochmal vorsichtshalber: die DLLs entladen ist relativ heikel und hat eher zweifelhafte Erfolge... nutze sie besser als Indiz dafür, wo noch unnötiger Code mit einkompiliert wird. Als Anleitung dafür etwa kannst Du auch ein Programm nehmen, daß anzeigt, welche Funktionen aus diesen DLLs importiert werden (wenns der ProcessExplorer nicht macht, dann z.B. der FileAlyzer). Und wenn Du dann die völlig unnötige Funktion ImageList_Add aus comctl32.dll importiert siehst, suchst Du mal die RTL/VCL-Unit, die diese Funktion importiert, versuchst herauszufinden über welche Umwege diese auch in Dein Projekt eingebunden ist und ob Du diese Abhängigkeit nicht lösen kannst (zwar "kostet" der Import selber nichts, aber diese Unit kann halt jede Menge unnötigen Code mitkompilieren).
  Mit Zitat antworten Zitat