Thema: Delphi Speicher freigeben

Einzelnen Beitrag anzeigen

texmurphy901

Registriert seit: 8. Nov 2006
35 Beiträge
 
#1

Speicher freigeben

  Alt 24. Nov 2008, 10:55
Hallo allerseits,

habe da ein kleines Problem: Ich lasse mir in meinem Programm zur Laufzeit PDF-Dokumente anzeigen. Dazu habe ich mir die Komponente von Gnostice gekauft, das aber nur am Rande.
Jedenfalls habe ich ein (fast) leeres Fenster, welches erst bei Bedarf zur Laufzeit die PDF-Komponenten erzeugt und die Datei anzeigt. Beim schließen des Fensters, gebe ich die Instanzen wieder frei. Dummerweise schlägt sich das nicht im Speicherverbauch meiner Anwendung nieder. Wenn ich mit dem Task manager kontrolliere, so steigt der Speicher mit jedem Aufruf des Fensters an, wird aber beim schließen nicht wieder kleiner.
Da es sich nicht gerade um kleine Mengen handelt (>500KByte) ist also irgendwann Sense auf kleineren Rechnern und das wollte ich gerade mit dem freigeben der Ressourcen ja verhindern.


Hat jemand eine Idee?

Hier nun ein paar Code-Schnippsel:


Erzeugen der Instanzen. Das geschieht in einer eigenen Prozedur __init, die explizit gestartet werden muss, die aber nicht automatisch bei onCreate oder onShow aufgerufen wird. Damit bin ich mir sicher, dass ich nicht nebenbei noch ein paar andere Instanzen erzeuge. Hier der Code:
Delphi-Quellcode:
  procedure Tviewer.__init;
begin
  //Fenstergröße einstellen
  width:=800;
  height:=780;
  PDFViewer:=TgtPDFViewer.Create(self);
  with pdfviewer do begin
    Parent:=Viewer;
    Width:=750;
    Height:=700;
    Top:=50;
  end;

  PDFDoc:=tgtPDFDocument.Create(self);

  pdfviewer.PDFDocument := PDFDoc;
end;
...und die Ressourcenfreigabe bei onClose des Form:
Delphi-Quellcode:
procedure Tviewer.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   PDFDoc.free;
   PDFViewer.free;
end;
Ein Ersetzen von Free durch Destroy hilf nebenbei gesagt auch nicht, falls jemand mit dem Tip kommen sollte
Ich danke schonmal allen Helfenden!!!
  Mit Zitat antworten Zitat