Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Speichernutzung > 2 GB in Windows Vista Home 32 (https://www.delphipraxis.net/124980-speichernutzung-2-gb-windows-vista-home-32-a.html)

xcs 28. Nov 2008 08:15


Speichernutzung > 2 GB in Windows Vista Home 32
 
Hallo,
ich habe ein Programm geschrieben, welches mehr als 2 GB RAM benötigt.
Ich benutze Delphi 7.0 bzw. Delphi 2006 for Win 32.
In den Quelltext der Projektdatei habe ich den Schalter

{setPEFLAGS $20}

eingefügt.

Unter Windows XP funktioniert das Programm super (ich kann bis 3 GB RAM nutzen).
Aber unter Windows Vista Home Edition (32 Bit) funktioniert das nicht, obwohl ich bereits den Schalter

bcdedit -set loadoptions " /3GB"

gesetzt habe.
Wenn das Programm den Speicher reservieren will, kommt bei ziemlich genau 2 GB die Windows-Meldung: "zu wenig Arbeitsspeicher".
(das System hat 4 GB RAM)


Kann mir da jemand helfen? Muss ich für Windows Vista eine andere compiler-Anweisung als [setPEFLAGS $20} eingeben?
Oder muss ich es extra unter Windows Vista kompilieren?
(habe es bisher immer auf dem Windows XP System kompiliert)



Danke.

Luckie 28. Nov 2008 08:23

Re: Speichernutzung > 2 GB in Windows Vista Home 32
 
Zitat:

Zitat von xcs
ich habe ein Programm geschrieben, welches mehr als 2 GB RAM benötigt.

Da würde ich mir noch mal über das Design Gedanken machen. Was macht denn dein Programm, dass es so viel Speicher benötigt?

Bernhard Geyer 28. Nov 2008 09:17

Re: Speichernutzung > 2 GB in Windows Vista Home 32
 
Der Compilerschalter ist der gleiche, aber die nötigen Einstellungen im OS-Bootmenü sind AFAIK andere.

Aber ich kann Luckie zustimmen: Sind wirklich 2 GB nötig? Sowas kann ich mir nur im CAD-Bereich vorstellen wo z.B. ein kompletes Auto im CAD-Programm geladen wird. Dort sind 2 GB schon sehr wenig (trotz Optimierter implementierung).

xcs 28. Nov 2008 10:48

Re: Speichernutzung > 2 GB in Windows Vista Home 32
 
Zitat:

Zitat von Luckie
Da würde ich mir noch mal über das Design Gedanken machen. Was macht denn dein Programm, dass es so viel Speicher benötigt?

Wusste ich, dass diese Frage kommt.
JA, es ist notwendig, weil ich numerische Berechnungen durchführe, für die ich Speicher für mehr als 4 Millionen Instanzen eines Objektes reservieren muss. Eine Instanz benötigt 500 bis 1000 Byte (abhängig davon, ob ich double oder single verwende).

Also zurück zur eigentlichen Frage:
Es liegt also NICHT am Compiler-Schalter?

Luckie 28. Nov 2008 11:04

Re: Speichernutzung > 2 GB in Windows Vista Home 32
 
Eine Klasse wird 4 Milionen man instanziert? Und du brauchts alle 4 Millionen Instanzen gleichzeitig? Kannst du uns etwas mehr über den Aufbau und die Funktionweise deines Programmes sagen?

An über 2 GB RAM kommt man nur, wenn man in der Boot.ini einen entsprechenden Schalter setzt und den Compiler entsprechend anweist diesen bei der Kompilierung zu berücksichtigen. Aber das ist eigentlich keine Lösung, da 1 GB für das Betriebssystenm schon hart an der untersten Grenze ist. Würde mich nicht wundern, wenn du da auf der ein oder anderen Windows Installation Probleme bekommen könntest. Es läuft also immer auf ein Verbangspiel hinaus, ob dein Programm läuft oder nicht. Das nur mal so als Hinweis.

Bernhard Geyer 28. Nov 2008 11:04

Re: Speichernutzung > 2 GB in Windows Vista Home 32
 
Zitat:

Zitat von xcs
Eine Instanz benötigt 500 bis 1000 Byte (abhängig davon, ob ich double oder single verwende).

Mit oder ohne Debug-Infos? Und wieso machst du Objekte? Jede-Objektinstanz hat selbst noch einen Overhead. Hier ist evtl. sinnvoller ein Masterobjekt zu haben da z.B. über ein verkettete List/Array die "Objekte" als Records realisiert.

Zitat:

Zitat von xcs
Also zurück zur eigentlichen Frage:
Es liegt also NICHT am Compiler-Schalter?

Nein. Hab auch schon mal probiert Vista (Business) "zu pimpen" und bin selbst gescheidert. Stört aber nicht da ich es dann auf unserem Windows 2008 Server mit 8 GB teste :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 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