AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Mein Programm ist Arbeitsspeicher hungrig..
Thema durchsuchen
Ansicht
Themen-Optionen

Mein Programm ist Arbeitsspeicher hungrig..

Ein Thema von Cubysoft · begonnen am 18. Mai 2015 · letzter Beitrag vom 20. Mai 2015
Antwort Antwort
hathor
(Gast)

n/a Beiträge
 
#1

AW: Mein Programm ist Arbeitsspeicher hungrig..

  Alt 18. Mai 2015, 23:21
Das lässt sich viel besser speichern:

EinString : array [0..4] of ANSIChar; // 5 Bytes * 41000 = 205 kB
BooleanWerte :
uses System.Classes.TBits.Bits
var
Bits: TBits;
I: Byte;
begin
{ Create a a bit set. }
Bits := TBits.Create;
{ Set the size of the bit set. }
Bits.Size := 12; // 12 BooleanWerte 61,5 kB
------------------------------------------SUMME : 266,5 kB
http://docwiki.embarcadero.com/Libra...#Code_Examples

Geändert von hathor (19. Mai 2015 um 08:32 Uhr)
  Mit Zitat antworten Zitat
Cubysoft

Registriert seit: 5. Sep 2014
Ort: Ludwigshafen
76 Beiträge
 
Delphi XE8 Professional
 
#2

AW: Mein Programm ist Arbeitsspeicher hungrig..

  Alt 18. Mai 2015, 23:38
schaut euch mal bitte meine Code an. Das ist alles. Was ist daran falsch, bzw wieso wird so viel Speicher verbraucht? Die Strings die heruntergeladen werden sind schon relativ groß ~1-2MB allerdings sollten die ja im Grunde keine Rolle spielen, da sie nur lokal sind und dann nicht im speicher bleiben.. Also woran kann das liegen?
Tobias
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Mein Programm ist Arbeitsspeicher hungrig..

  Alt 18. Mai 2015, 23:44
Entwickelst du für die Mobile Plattforms oder warum gibts du da einige Sachen nicht frei?

Prüfe deinen Code - überall wo du Instanzen erzeugst musst du die irgendwann auch wieder frei geben. Das sehe ich aber nicht bei allen Instanzen ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Cubysoft

Registriert seit: 5. Sep 2014
Ort: Ludwigshafen
76 Beiträge
 
Delphi XE8 Professional
 
#4

AW: Mein Programm ist Arbeitsspeicher hungrig..

  Alt 19. Mai 2015, 00:19
Ja das ist korrekt. Werde das nochmal überarbeiten. Danke

Vielen Dank. Es lag an den vielen Instanzen von IDHttp und dem SSL Teil. Funktioniert jetzt bestens mit 5MB RAM-Verbrauch. Records und Variablen müssen nicht freigegeben werden oder?
Tobias

Geändert von Cubysoft (19. Mai 2015 um 00:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#5

AW: Mein Programm ist Arbeitsspeicher hungrig..

  Alt 19. Mai 2015, 00:58
Records und Variablen müssen nicht freigegeben werden oder?
Kann man so nicht sagen. Eine Variable und auch Records können Objekte beinhalten. Schließlich heißt es ja z.B.var sl: TStringList; Und Objekte, die man erzeugt, muss man auch wieder freigeben.

MfG Dalai
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: Mein Programm ist Arbeitsspeicher hungrig..

  Alt 19. Mai 2015, 01:06
Records und Variablen müssen nicht freigegeben werden oder?
Solange Records nur normale Variablen enthalten, also z. B. keine Objekte, nein, in den Fall muss man sie nicht freigeben.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Mein Programm ist Arbeitsspeicher hungrig..

  Alt 19. Mai 2015, 04:38
Hallo,
ich würde noch packend Record schreiben.

Für Speicherlecks werfe ich noch FastMM4 rein..


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#8

AW: Mein Programm ist Arbeitsspeicher hungrig..

  Alt 19. Mai 2015, 07:40
Packed wird hier nichts ändern und bei aktiv genutzten Records im Speicher ist wowas es etwas ungünstiger.

Vorner der 4 Byte Pointer und dahinter eine gute Anzahl an Bytes, womit am Ende alles praktisch schon gepackt ist, da keine Leerstellen entstehen
und es sind sogar so viele Bytes (Boolean), daß der Record voll ist. (vielfaches von 4)

Und dann ist das Array mit den Records eh nichtmal 2 MB groß.
Wie hier welche entdeckt haben, liegt das Problem ja ganz wo anders. (Speicherlecks)
Ein Therapeut entspricht 1024 Gigapeut.
  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 18:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz