Autor Beitrag
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8553
Erhaltene Danke: 479

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 13.03.03 22:02 
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.

_________________
We are, we were and will not be.
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8553
Erhaltene Danke: 479

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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)

_________________
We are, we were and will not be.
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: 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.

_________________
Ist Zeit wirklich Geld?
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Fr 14.03.03 09:41 
Gibst Du die StringListen auch wieder frei?

Gruß
TINO
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8553
Erhaltene Danke: 479

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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...?

_________________
We are, we were and will not be.