AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem mit der Speicherauslastung

Ein Thema von patti · begonnen am 13. Jun 2009 · letzter Beitrag vom 13. Jun 2009
Antwort Antwort
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem mit der Speicherauslastung

  Alt 13. Jun 2009, 13:25
Stehe leider im Moment vor einem kleinen Problem mit der Speicherauslastung meines Programmes und wollte mal fragen, ob das normal ist
Und zwar geht es darum: Ich habe eine TList mit Objekten. Diese Objekte speichern u.a. jeweils ein JPEG mit den Maßen 240*338 Pixel. Durch eine relativ hohe Kompression haben die Bilder nur etwa 10 KB. Eine Routine geht dann die komplette Liste durch, erzeugt ein 24Bit-Bitmap mit den gleichen Maßen, stretcht das BMP auf die Größe 48x68 runter und fügt es zu einer ImageList hinzu. Die Bitmaps haben alle eine Größe von ca. 10 KB ( 48x68x24/8/1024 KB ). Starte ich das Programm, habe ich zu Beginn etwa eine Speicherauslastung von 2400 KB. Nach Aufruf der Routine mit 15 Elementen steigt meine Speicherauslastung jedoch auf etwa 6000 KB. Etwa 3600 KB kommen also einfach hinzu! Minus die 150 KB für die 15 Bitmap-Elemente in der ImageList, bleiben also etwa 3450 KB übrig. Das entspricht genau der Datengröße von 15 24Bit-Bitmaps in der Größe von 240*338 Pixeln. Allerdings erzeuge ich in der gesamten Routine nur einmal das Bitmap und gebe es am Ende wieder mit FreeAndNil frei. Im Moment hole ich mir das JPEG mit

bmp.Assign(JPEG); ,weil ich das wo gelesen habe. Vorher habe ich es auch schon anders probiert, hat aber nichts verändert.

Hoffe, mein Problem kann gelöst werden. Bei über 300 Elementen in der Liste steigt die Speicherauslastung nämlich drastisch an Danke im Voraus

Patti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit der Speicherauslastung

  Alt 13. Jun 2009, 13:35
Beim Laden Von JPEGs werden diese in Bitmaps gewandelt, belegen also mehr Speicher. Wie gibst du diese frei?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Problem mit der Speicherauslastung

  Alt 13. Jun 2009, 13:46
Die JPEGs selbst bleiben bis zum Programmende erhalten. Ich erzeuge zu Beginn meine Liste und lade anschließend die Objekte aus einem Stream. Dabei werden auch die JPEGs geladen. Erst am Programmende gebe ich alles wieder frei (Liste mit allen Objekte). Während das Programm läuft, scheint es auch keine Probleme zu geben, da der Speicherverbrauch konstant bei etwa 2400 KB bleibt. Erst wenn ich die besagte Routine aufrufe, steigt die Speicherauslastung drastisch an. Die JPEGs selbst brauche ich im Speicher. Kann man das erzeugte Bitmap unabhängig davon wieder freigeben?

Patti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Problem mit der Speicherauslastung

  Alt 13. Jun 2009, 14:07
So, hatte Erfolg
Habe jetzt den Umweg über ein weiteres JPEG genommen. Hab einfach in der Schleife ein JPEG (j) erzeugt, dann mit

j.Assign(JPEG); das Original-JPEG geladen, mit j weiter gearbeitet und am Ende mit FreeAndNil(j) wieder freigegeben. Der Speicherverbrauch bleibt dabei ziemlich gering. Danke für die Anregung
Wenn es eine bessere Möglichkeit gibt, dann trotzdem immer her damit

Patti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:04 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