![]() |
Zu wenig Arbeitsspeicher
Beim Compilieren eines Projektes erhalte ich die Fehler-Meldung 'Zu wenig Arbeitsspeicher' im Erzeugen-Fenster. Die Compilierung wird abgebrochen und Delphi ist danach unbrauchbar - Absturz bei Zugriff auf NTDLL.DLL. Danach hilft nur noch ein Neustart.
Das Ganze passiert mir fast täglich beim ersten Start des Rechners. Nach einem Neustart gibt es im allgemeinen keine Probleme. Ich nutze Win2k SP4 und Delphi 7 Pro. Ähnliche Probleme konnte ich aber auch unter XP Pro SP2 feststellen. Die Rechner haben 1GB Hauptspeicher. Der Taskmanager meldet, dass die Speichernutzung bei ca. 330 MB liegt. Es sollte also genug Speicher vorhanden sein. Das Problem taucht nur unter Delphi auf. Alle anderen Programme funktionieren augenscheinlich problemlos. Das Projekt hat ca. 280000 Zeilen und der Abbruch ist nicht immer an der gleichen Stelle. Hat jemand eine Ahnung, woran das liegen kann? |
Re: Zu wenig Arbeitsspeicher
Wenn du in deinem Project die BDE verwendest ist liegt es daran das du die Anwendung nicht sauber beendest sondern von der IDE aus zurücksetzt ... das machst du dann ein paar Mal und dann kommen diese Fehler ...
|
Re: Zu wenig Arbeitsspeicher
Du könntest unbenützte Units aus den Uses-Klauseln entfernen.
Dies entlastet den Compiler beim Aufbau seiner diversen Symboltabellen. Dazu gibt es ein Freeware Tool namens Icarus: ![]() Du brauchst ca. 1 Stunde für Installation & Einarbeitung + ca. 3 Minuten für jede Unit. |
Re: Zu wenig Arbeitsspeicher
Die BDE wird nicht verwendet.
Auch das Icarus-Tool hat nichts Neues gebracht. Alle Units werden verwendet. Zum Aufbau der Symboltabellen: Ist es allgemein für den Delphi-Compiler günstiger, wenn man viele Units benutzt oder eher weniger, die aber entsprechend größer sind. Oder ist das vollkommen egal. |
Re: Zu wenig Arbeitsspeicher
Zitat:
Beispiel: wenn man ein neues Datenmodul erzeugt, sieht das ungefähr so aus:
Delphi-Quellcode:
Schau man sich die Uses-Klausel an, sieht man, dass die Unit Graphics und Controls in einem Datenmodul
unit Unit2;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TDataModule2 = class(TDataModule) private nicht benötigt werden. Also rauslöschen. Auch Messages wird man in 99% aller Fälle nicht brauchen. Icarus markiert nicht benötigte Units mit einem Pfeil ==>:
Code:
==> Controls unnecessary (has initialization)
Forms in interface (has initialization) ==> Dialogs unnecessary (has initialization) Zitat:
Man sollte die Units so designen, wie es für die Programmierung am günstigsten ist und keine Rücksicht auf den Compiler nehmen. Dann sollte man nur die Units in die Uses-Klausel reintun, die auch wirklich zum kompilieren benötigt werden. |
Re: Zu wenig Arbeitsspeicher
Zitat:
Recht hast Du! Ich habe mir nur die ersten Zeilen angeschaut und da sah alles okay aus. Für neue Datenmodule nutze ich eine fast leere 'Beispiel-Unit', in der nur die Units unter uses stehen, die ich eh zu 99% benötige. Das geht schneller. Und daher ist ein guter Teil, der bislang 372 units sauber. Aber es gibt noch eine Menge Altlasten. Danke für die Hilfe. Hoffentlich bringt das entrümpeln etwas mit dem Hauptthema. |
Re: Zu wenig Arbeitsspeicher
Icarus meldet, dass man in den Forms z.Bsp classes und Graphics in den implementation-Teil verschieben kann. Delphi weigert sich da aber standhaft. Ist das ein Bug in Icarus oder gibt es da einen Trick, Delphi zu überreden?
|
Re: Zu wenig Arbeitsspeicher
Zitat:
Könnte allerdings auch ein Problem der Delphi IDE sein. Man müsste die PAS Datei mit dem Notepad editieren und mit dem Delphi Kommandozeilen Compiler übersetzen. Wenn es keine Compilerfehler gibt, liegt das Problem in der IDE. Na ja, aber zuviel Zeit sollte man darin nicht investieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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