Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zu wenig Arbeitsspeicher (https://www.delphipraxis.net/35961-zu-wenig-arbeitsspeicher.html)

TM6 14. Dez 2004 09:27


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?

Orbmu2k 14. Dez 2004 10:06

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 ...

shmia 14. Dez 2004 10:35

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: http://www.peganza.com/download.htm
Du brauchst ca. 1 Stunde für Installation & Einarbeitung + ca. 3 Minuten für jede Unit.

TM6 14. Dez 2004 12:41

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.

shmia 14. Dez 2004 13:09

Re: Zu wenig Arbeitsspeicher
 
Zitat:

Zitat von TM6
Auch das Icarus-Tool hat nichts Neues gebracht. Alle Units werden verwendet.

Glaub ich nicht. Du hast den Report nicht genau analysiert. :roteyes:
Beispiel:
wenn man ein neues Datenmodul erzeugt, sieht das ungefähr so aus:
Delphi-Quellcode:
unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
  TDataModule2 = class(TDataModule)
  private
Schau man sich die Uses-Klausel an, sieht man, dass die Unit Graphics und Controls in einem Datenmodul
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:

Zitat von TM6
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.

Es kommt drauf an, würd ich mal sagen. :stupid:
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.

TM6 14. Dez 2004 14:09

Re: Zu wenig Arbeitsspeicher
 
Zitat:

Zitat von shmia
Glaub ich nicht. Du hast den Report nicht genau analysiert. :roteyes:

:oops:
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.

TM6 14. Dez 2004 15:00

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?

shmia 14. Dez 2004 15:18

Re: Zu wenig Arbeitsspeicher
 
Zitat:

Zitat von TM6
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?

Ich denke, das ist ein Bug, ähm sagen wir mal Schwachpunkt von Icarus.
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