AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi ObjectList gibt Speicher nicht wieder frei
Thema durchsuchen
Ansicht
Themen-Optionen

ObjectList gibt Speicher nicht wieder frei

Ein Thema von karma · begonnen am 8. Jun 2009 · letzter Beitrag vom 8. Jun 2009
Antwort Antwort
karma

Registriert seit: 14. Mai 2008
27 Beiträge
 
#1

ObjectList gibt Speicher nicht wieder frei

  Alt 8. Jun 2009, 17:06
Hallo,
ich habe einen Loader für STL-Dateien programmiert, der aus einer STL Datei die Vertices ließt und in einer ObjectList ablegt.
Wenn ich eine neue Datei öffne, leere ich die Liste vorher mit der clear-Methode der Liste, aber laut dem Windows Taskmanager reserviert das Programm immer mehr Speicher. Was mache ich falsch?

Delphi-Quellcode:
type
  vertex = record
    x,y,z:double;
  end;

type //Sollen in der Liste abgelegt werden
  Ttriangle = class(TObject)
    vertices:array[0..2] of vertex;
    normal:vertex;
  end;

//......

vertexlist:TObjectList;

//...

procedure TForm1.FormCreate(Sender: TObject);
begin
  vertexlist:=TObjectList.Create;
  vertexlist.OwnsObjects:=true;
end;

//in der lade-prozedur rufe ich dann zu anfang immer auf:
  vertexlist.Clear;

//zum hinzufügen erst die instanz für jedes dreieck erzeugen
  triangle:=TTriangle.Create;
//mache die zuweisungen und schließlich
vertexlist.Add(triangle);
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: ObjectList gibt Speicher nicht wieder frei

  Alt 8. Jun 2009, 17:08
Nix machst du falsch. Zwischen deinen Speicheranforderungen und den angaben des Taskmanagers liegen noch der Delphispeichermanager und die Ungenauigkeiten des Taskmanagers.

Ist der Anstieg extrem stark (> +1000%) , dann musst du mal mehr Code posten. an dem hier sehe ich keinen fehler.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
karma

Registriert seit: 14. Mai 2008
27 Beiträge
 
#3

Re: ObjectList gibt Speicher nicht wieder frei

  Alt 8. Jun 2009, 17:12
Danke für die Antwort!
Wenn ich eine Datei mit paar hunderttausend Vertices lade, nutzt das Programm beim ersten Laden ca. 100MB, beim zweiten ca. 160MB und beim dritten Laden 225MB. Das ist soweit ok?
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: ObjectList gibt Speicher nicht wieder frei

  Alt 8. Jun 2009, 17:15
Zitat von karma:
Danke für die Antwort!
Wenn ich eine Datei mit paar hunderttausend Vertices lade, nutzt das Programm beim ersten Laden ca. 100MB, beim zweiten ca. 160MB und beim dritten Laden 225MB. Das ist soweit ok?
das ist nicht ok.

Die Frage ist, wie du mehrere Ladevorgänge schaffst, wenn du das Hinzufügen im FormCreate machst. Ich denke der relevante Code von dir liegt an einer anderen Stelle.

[edit] Sorry, hatte mich verguggt. Poste mal die gesamte Ladefunktion incl. des Teils, wo du deine Objecteinträge erstellst. [/edit]

Gruß oki
42
  Mit Zitat antworten Zitat
karma

Registriert seit: 14. Mai 2008
27 Beiträge
 
#5

Re: ObjectList gibt Speicher nicht wieder frei

  Alt 8. Jun 2009, 19:02
Fehler gefunden, ich benutze eine Funktion hier aus dem Forum, die meinen String nach Leerzeichen in Substrings aufteilt und eine Stringlist als result zurückgibt.
Ich würde die Funktion gerne durch "ExtractStrings" aus den Standard-Bibliotheken ersetzen, ich bin mir aber nicht ganz sicher, was mit "Whitespace" gemeint ist:
http://delphi.about.com/library/rtl/...actStrings.htm
Edit: Ok, habs. Kann ich einfach weglassen
Jetzt ist der Speicherverbrauch bei dem File bei 36MB und bleibt da auch nach mehrmaligem Laden
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz