2015-07-22 14 views
5

Ich verwende IList aus dem ausgezeichneten Delphi-Framework Spring4D von Stefan Glienke.Delphi Spring4D IList Speicherüberlauf

Ich habe eine Liste IList und ich fülle diese Liste viele Male während meiner Anwendung wird ausgeführt. Also, nach zwei oder drei Stunden habe ich einen Speicherüberlauf meiner Liste. Diese

ist, wie ich meine Liste zu füllen:

list := TCollections.CreateList<TVisitor>; 

    for i := 0 to dataSet.RecordCount - 1 do begin 
     item := TVisitor.Create(); 

     item.Surname := dataSet.FieldByName ('firstname').AsString; 
     item.Name := dataSet.FieldByName ('secondname').AsString; 
     item.Patronymic := dataSet.FieldByName ('thirdname').AsString; 
     item.CardNumber := dataSet.FieldByName ('cardnumber').AsString; 

     list.Add (item); 

     dataSet.Next(); 
    end; 

Die Clear() -Methode befreit keinen Speicher, so dass jedes Mal, wenn ich fülle meine Liste der Windows-Task-Manager inc Speichernutzung meiner Anwendung :(.

Antwort

7

Ihre Liste hat die TVisitor Instanzen nicht frei

ist erstellen wie folgt aus:

TCollections.CreateList<TVisitor>(True); 
+0

OMG, es ist so einfach! Danke Stefan. Jetzt funktioniert es perfekt. – Aptem