Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zu wenig Arbeitsspeicher (https://www.delphipraxis.net/146825-zu-wenig-arbeitsspeicher.html)

Ines 27. Jan 2010 13:40


Zu wenig Arbeitsspeicher
 
Hallo DP'ler,

mein Programm bringt (immer wieder mal) den Fehler : zu wenig Arbeitsspeicher.
(Ich hab' Euch damit auch schon genervt.)

Ein Kollege hat mir gesagt, ich müßte das Programm mit anderen Parametern kompilieren, da
diese Rechner alle 4 G Arbeitsspeicher haben und in der boot.ini der Parameter "/3" gesetzt ist. :gruebel:

Könnt Ihr mir sagen - wo und was ich ändern muß - damit diese ..... Rechner mein Programm anstandslos laufen lassen.

Mit FastMM hab' ich gerade mehrere Test gemacht. Es wurden ein paar Speicherlecks angemotzt und die werde ich jetzt versuchen zu beseitigen.

Vielen Dank und viele Grüße
Ines

P.S. Delphi2009 und Win XP

himitsu 27. Jan 2010 13:44

Re: Zu wenig Arbeitsspeicher
 
Die Frage ist erstmal:
Muß dein Programm überhaupt soviel Speicher verbrauchen?

Oder wäre es nicht besser den Speicherbedarf zu senken.



PS: Wenn du ein Speicherleck hast, welches dafür sorgt, dann würdest du dieses Problem, mit "mehr" Speicher, nur etwas hinauszögern, aber nicht beheben.

Medium 27. Jan 2010 13:48

Re: Zu wenig Arbeitsspeicher
 
Fast jedes Programm, dass 2GB an RAM verbrät, hat entweder haufenweise Lecks (bzw. reichen einige wenige die sich in Schleifchen aufsummieren auch), oder massive Designprobleme. Mir würde ehrlich gesagt nur sehr wenig einfallen, bei dem man heutzutage wirklich so viel RAM wirklich braucht.

Ich denke mit der Beseitigung der von FastMM monierten Lecks bist du zunächst gut beraten. Wenn es dann noch Probleme gibt, kann man ja weiter schauen.

Ines 27. Jan 2010 13:50

Re: Zu wenig Arbeitsspeicher
 
Hallo,

ich glaube nicht, daß mein Programm soviel Speicher verbraucht.
Es läuft allerdings gleichzeitig mit 5 anderen (zum Teil sehr speicherintensiven Programmen).
Und diese Programme müssen alle gleichzeitig laufen!

Mein Programm läuft auf "normalen" PC (Arbeitsspeicher <= 2 G) - auch zusammen mit anderen Programmen völlig problemlos.

Ich glaube (kann es aber nicht beweisen) daß es nicht an meinem Programm sondern an dem Philips-Programm liegt.

Grüße
Ines

himitsu 27. Jan 2010 13:54

Re: Zu wenig Arbeitsspeicher
 
Wenn es an den anderen Programmen liegt, dann würde es auch nichts ändern, wenn du in deinem Programm die 3GB-Option aktivierst, da dieses nur ein Maximum an virtuellem Speicherbereich innerhalb deiner Anwenung erhöht,

aber Wenn windows meckert, dann geht ihm der physische Speicher aus.

Ines 27. Jan 2010 14:04

Re: Zu wenig Arbeitsspeicher
 
Zitat:

Zitat von himitsu
Wenn es an den anderen Programmen liegt, dann würde es auch nichts ändern, wenn du in deinem Programm die 3GB-Option aktivierst, da dieses nur ein Maximum an virtuellem Speicherbereich innerhalb deiner Anwenung erhöht,

aber Wenn windows meckert, dann geht ihm der physische Speicher aus.

Mir wurde gesagt, daß mein Programm nicht den Speicherbereich zwischen 2 und 3 GB nutzen kann und ich deshalb die 3GB-Option setzen muß.

Was meinst Du mit - dann geht im der physische Speicher aus?

Die Größe der Auslagerungsdatei darf Windows selbst festlegen und auf der Platte ist jede Menge Speicherplatz frei.

Ines

himitsu 27. Jan 2010 14:09

Re: Zu wenig Arbeitsspeicher
 
Dein Programm kann diesen Bereich nur innerhalb seines virtuellen Speichers nicht nutzen.
Wo der virtuelle Speicher aber im physischen Speicher abgelegt wird, das entscheidet Windows und da könnte bei 8 GB RAM der Speicher deines Programms auch teilweise in den höheren physischen Speicherbereichen liegen.

Virtuell ist der Speicher innerhalb deines Programmes zwar fest, aber physisch können einzelne "virtuelle" Speicherbereiche sonstwo im System abgelegt und verschoben werden.
(RAM + Auslagerungsdatei)

Bernhard Geyer 27. Jan 2010 14:18

Re: Zu wenig Arbeitsspeicher
 
Zitat:

Zitat von Ines
Mir wurde gesagt, daß mein Programm nicht den Speicherbereich zwischen 2 und 3 GB nutzen kann und ich deshalb die 3GB-Option setzen muß.

Würde ich als letzten Notnagel für Hotfixes aufheben wenn ein Fehlerbeheben in der Implementierung/Design nicht so schnell möglich ist.

Ansonsten: {$SetPeFlags $20} im der DPR setzen.

himitsu 27. Jan 2010 14:47

Re: Zu wenig Arbeitsspeicher
 
Zitat:

Zitat von Bernhard Geyer
Würde ich als letzten Notnagel für Hotfixes aufheben wenn ein Fehlerbeheben in der Implementierung/Design nicht so schnell möglich ist.

Wie gesagt, wenn dem System der physische Speicher ausgeht, dann ändert dieses nichts
und wenn das Programm eh nicht soviel Speicher vergraicht, dann ist es auch garnicht nötig.


@Ines: Laß dir von deinem Kollegen mal sagen, wieviel Speicher diese Programme belegen (laut Taskmanager), wenn es wieder zu dieser Fehlermeldung kommt.

Medium 27. Jan 2010 14:47

Re: Zu wenig Arbeitsspeicher
 
Wenn dein Programm unter 2GB bleibt, dann hilft dir die >2GB Option überhaupt nicht weiter. Aus Sicht deines Programmes ist der Speicher immer an der selben Stelle, und wird immer ab der selben Adresse benutzt. Wo Windows das tatsächlich im RAM physikalisch hinterlegt ist für dich (dein Programm) völlig unerheblich.
Nur, und nur dann wenn dein eigenes Programm mehr als 2GB selbst belegen muss kann diese Option weiter helfen, weil dann auch virtuell mehr als ursprünglich vorgesehen adressiert werden muss. Wenn es aber um die Summe der laufenden Applikationen geht, tut das rein garnüscht.

Dieses out of memory kenne ich übrigens auch noch im Zusammenhang mit GDI-Ressourcen, die unabhähngig vom Speicherausbau auch nur begrenzt vom OS bereit gestellt werden. (Oder hieß es dann wirklich "out of ressources? :gruebel: Egal, go:) Tritt das Problem also irgendwo auf, wo du was zeichnest, ein Bitmap erstellst, eine Region oder irgend etwas in diese Richtung, dann kann auch dort der Hund begraben liegen. Aber auch hier gibt's ein ähnliches Problem: Wenn ein Fremdprogramm verschwenderisch mit GDI Objekten umgeht, kannst du selber da herzlich wenig dran machen. Dein eigenes Programm sollte nur darauf achten, wenn überhaupt von Hand mit GDI Objekten gearbeitet wird, diese peinlichst zuverlässig wieder frei zu geben - und zwar wirklich sobald sie nicht mehr, bzw. für längere Zeit nicht gebraucht werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:46 Uhr.
Seite 1 von 2  1 2      

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