Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Tstringlist, Stringlänge begrenzen
Gausi - Do 13.03.03 22:02
Titel: Tstringlist, Stringlänge begrenzen
Gibt es ne einfache Möglichkeit, einer TSTringlist mitzuteilen, dass sie nur kurze Strings enthält?
Mein Programm hat nämlich einen erstaunlich hohen Speicherbedarf, und das könnte unter anderen an den vielen Stringlisten liegen, die ich da drin habe. Die Strings haben aber nur eine Länge von ca. 10-20 Zeichen.
d.h. ich könnte den Speicherverbrauch durch um eine Längenbeschränkung der TStringlist um das eine oder andere Kilobyte senken.
MSCH - Do 13.03.03 22:05
Eigentlich nicht,
da normale Strings (huge-Strings) auch nichts weiter als Zeiger sind. Daher kann ein solcher String auch 2 GB annehmen :-)
Wie groß ist denn dein Progg?
grüße
MSCH
Gausi - Do 13.03.03 22:13
nun, die exe Datei ist ungepackt 800kb groß. Direkt nach Programmstart meint mein TaskManager, dass das Teil 3.8MB belegt, und zur Laufzeit steigt die Zahl bei meinen Listengrößen auf 7.8MB. Das ist jetzt nicht sooo viel, aber trotzdem würde ich gerne mal die Zahlen nachvollziehen können. Nur durch die ganzen Variablen kann der Verbrauch nicht kommen (Arrays, Listen etc. mit eingerechnet)
AndyB - Fr 14.03.03 00:09
| Gausi hat folgendes geschrieben: |
| nun, die exe Datei ist ungepackt 800kb groß. Direkt nach Programmstart meint mein TaskManager, dass das Teil 3.8MB belegt |
Der Unterschied hier ergibt sich daraus, dass das Programm ja auch mit Daten arbeiten muss, die Platz belegen. So belegt jede Komponente ihren Speicher.
| Zitat: |
| ud zur Laufzeit steigt die Zahl bei meinen Listengrößen auf 7.8MB. |
Wenn du viele Listen und Elemente hast, dann ist das nicht viel.
| Zitat: |
| Nur durch die ganzen Variablen kann der Verbrauch nicht kommen (Arrays, Listen etc. mit eingerechnet) |
Wie schon gesagt, brauchen auch die Komponenten Speicher und davon nicht gerade wenig. Bei dynamischen Arrays solltest du nicht laufend die Anzahl der Elemente ändern, insb. um 1 Element vergrößern. Denn Delphi fordert dann neuen Speicher von Windows an, und verwaltet ihn dann intern. Somit geht dein Speicher für andere Anwendungen aus, wobei das Delphi Programm mehrere MB ungenutzt reserviert hat.
Tino - Fr 14.03.03 09:41
Gibst Du die StringListen auch wieder frei?
Gruß
TINO
Gausi - Fr 14.03.03 11:19
jep, die Stringlisten sind Komponenten einer selbstgebastelten Klasse, und dessen Destructor erledigt die Freigabe der Stringlisten. Das geschieht aber erst bei Programmende, denn solange brauch ich die Listen ja noch.
--------
Ist das normal, dass beim öffnen eines OpenDialogs der Speicherbedarf eines Programms um 2MB ansteigt...?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!