![]() |
Delphi 7 Win32 Speicherbelegung über 500MB
Hallo,
ich habe von der Speicherverwaltung von Delphianwendungen leider nicht sehr viel eigenes Wissen. Darum bitte ich euch mir zu helfen. Wir haben eine Delphi 7 win32 EXE zusammengesetzt, die sehr große Listen erstellt. Der belegte Arbeitsspeicher läuft laut Taskmanager bis 5oo MB hoch, dann bricht das Proggi mit 'zu wenig Arbeitspeicher' ab. Dies auf WinXP und Win2003 ohne Bezug auf den phys.o.virtuellem Arbeistpeicher. Darum meine Vermutung es gbt irgend welche Grenzen, die ich nicht kenne. Gibt es Einschränkungen in der Art ? Wie kann man dies umgehen, oder wie kann der Anwendung mehr Speicher zuordnen? Danke und Grüße - Kurti |
Re: Delphi 7 Win32 Speicherbelegung über 500MB
Moin Kurti,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Ich hatte auch schon mal ein Programm, dass sich Hauptspeicher in der genannten Grössenordnung genehmigt hat, dies allerdings ohne abzubrechen (auch D7). Auch wenn es nicht unmöglich ist solchen Speicherverbrauch "regulär" zu erreichen, könntest Du das Programm mal mit MemProof prüfen, ob Du Dir nicht irgendwo Speicherlecks eingehandelt hast, die zu dem Problem führen. [EDIT] Sollte alles OK sein... Mehr als 2GB (mit "Trick" evtl. 3GB) Adressraum bekommt die Anwendung auch mit virtuellem Speicher nicht. Ggf. müsstest Du die Daten dann auch auslagern (z.B. vielleicht via Memory Mapped File / MMF) [/EDIT] |
Re: Delphi 7 Win32 Speicherbelegung über 500MB
Danke für die Begrüßung,
ja Speicherlecks hab ich schon gesucht. Sind keine und es ist auch nachzurechnen, dass so viel Speicher verbraucht wird. Ich kann da auch nicht schnell was anders machen, da die Formulare sehr wichtig und tief eingebunden sind. Drum halt die Frage wie kann ich es bewerkstelligen, das nicht pünktlich nach 500 MB das Proggi mit Meldung aufhört. Gibt es Compilereinstellungen ? Kann man dem Betriebsystem nicht sagen 'ich werde min. soviel Speicher verbrauchen'? Gruß Kurti |
Re: Delphi 7 Win32 Speicherbelegung über 500MB
Zitat:
Zitat:
Was sind das für Formulare, daß sie so viel Speicher benötigen? Vielleicht solltest du was an der Lebensdauer der Formualre ändern (dynamsiches erzeugen und Freigeben) |
Re: Delphi 7 Win32 Speicherbelegung über 500MB
Wenn du keine Speicherlücken hast so rauscht Du vermutlich voll in das Fragmentierungsproblem des Default-Memory-Manager von Delphi bis D2005. D2006 hat hier mit
![]() - I.d.R. schneller - Bei weiten geringere Gefahr von Speicherfragmentierung - Eingebauter, aktivierbarer MemChecker - Verwendung von Strings in Exe und DLL ohne SharMem.DLL - Verwendung bis 3GB als 32-Bit-Programm unter 64-Bit Windows - ... Schau dir einfach mal den Artikel auf ![]() |
Re: Delphi 7 Win32 Speicherbelegung über 500MB
Moin Kurti,
Zitat:
Falls FastMM nichts nutzt, oder Du es nicht benutzen kannst/darfst, wäre es nämlich vielleicht eine Möglichkeit den Platzbedarf durch dynamisches Erzeugen der Formulare zu verringern (obwohl dann ja auch die Fragmentierung sich wieder erhöhen könnte :?) [EDIT] @Bernhard: Auch unter Win32 (z.B. XP-Pro, Windows 2003) können Anwendungen 3GB mit FastMM nutzen (gemäss Doku zu Version 4.72 vom 24.09.2006) [/EDIT] |
Re: Delphi 7 Win32 Speicherbelegung über 500MB
Zitat:
Zitat:
Aber gut zu wissen. Bisher konnten wir immer durch bessere Architektur/Algorithemn/Strukturen meistens dieses Problem "umschiffen". |
Re: Delphi 7 Win32 Speicherbelegung über 500MB
Moin Bernhard,
Zitat:
Was das Problem mit den GDI-Resourcen angeht: Ich erinnere mich an eine Komponentensammlung, bei der man bei Inaktivität von Windows-Komponenten (TWinControl-Nachfahren) die Handles wieder freigeben konnte, um solche Probleme zu vermeiden. |
Re: Delphi 7 Win32 Speicherbelegung über 500MB
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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