Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Bei Windows 64 Bit kompilieren kommt Fehler: F2046 Zu wenig Arbeitsspeicher (https://www.delphipraxis.net/208064-bei-windows-64-bit-kompilieren-kommt-fehler-f2046-zu-wenig-arbeitsspeicher.html)

juergen 3. Jun 2021 15:25

Bei Windows 64 Bit kompilieren kommt Fehler: F2046 Zu wenig Arbeitsspeicher
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

mit meiner Delphi 10.3.1 Version kamen in der Vergangenheit bei einem größeren Projekt nach der Umstellung von 32 Bit Windows auf 64 Bit Windows *beim ersten kompilieren* die o.g. Fehlermeldung.
Nach Neustart von Delphi hattes es dann aber immer funktioniert.
Arbeitsspeicher habe ich genug (40GB).

Als Windows 32 Bit lässt sich das Projekt immer kompilieren.
Das Projekt kompiliert ca. 2,45 Mio Zeilen. Das kommt daher, weil ich u.a. DevExpress Ribbonbar und dxRichEdit nutze. Meine eigenen Codezeilen liegen bei knapp unter 30.000.
Mit jeder neuen Version von DevExpress kommen immer mehr Codezeilen hinzu. Und seit der Version 20.2.8 lässt sich mein Projekt nun unter Delphi 10.3.1 als 64 Bit Windows gar nicht mehr kompilieren. :-(
Es erscheint (auch nach Neustart) immer o.g. Fehlermeldung.

Unter Uses stehen nur Units, die auch benötigt werden.
Zum Ende des Kompilierens steigt der Arbeitsspeicher von Delphi von ca. 1 GB schlagartig auf 1,8 GB und dann kommt die Fehlermeldung.

Weiß jemand ob sich mit den neueren Delphi Versionen in dieser Richtung etwas verbessert hat?
Aber Achtung: Das neue LSP kann ich in der momentanen Version leider *nicht* nutzen! Hat noch zu viele Fehler. Das lässt sich momentan wohl eher nur in kleineren Projekten und ohne DevExpress nutzen.
Obwohl: Zum kompilieren könnte man vorher vermutl. auf das LSP umstellen und die IDE damit um einiges arbeitsspeichermäßig entlasten, oder?


Vielen Dank schon mal vorab!

jaenicke 3. Jun 2021 16:15

AW: Bei Windows 64 Bit kompilieren kommt Fehler: F2046 Zu wenig Arbeitsspeicher
 
Die Fremdkomponenten direkt im Projekt mit zu kompilieren macht keinen Sinn. Binde diese doch einfach in kompilierter Form ein, dann hast du bei der Projektgröße keinerlei Probleme in der Richtung mehr.

Wir haben sogar die eigenen Units und Komponenten, die zwischen mehreren Projekten geteilt werden, herausgezogen und kompilieren diese separat.

juergen 3. Jun 2021 16:27

AW: Bei Windows 64 Bit kompilieren kommt Fehler: F2046 Zu wenig Arbeitsspeicher
 
Das hört sich interessant an. Kannst du mir ganz grob beschreiben wie das geht?

Vielen Dank!

juergen 3. Jun 2021 17:08

AW: Bei Windows 64 Bit kompilieren kommt Fehler: F2046 Zu wenig Arbeitsspeicher
 
Ich glaube ich weiß was du meintest. Man kann die DevExpress-Sachen in eine Dll gießen und dann entsprechend laden. Das schau ich mir jetzt mal näher an.

TurboMagic 3. Jun 2021 17:37

AW: Bei Windows 64 Bit kompilieren kommt Fehler: F2046 Zu wenig Arbeitsspeicher
 
Das mkit der DLL ist glaube ich nicht, was er meinte...
Wenn man nicht auch die Quelltextpfade in den Optionen angibt, sondern nur
den Bibliothekspofad oder so, dann wurden diese devexpress Sachen 1x compiliert und
wenn dein Projekt comiliert wird greift Delphi immer auf die DCUs davon zu, erstellt diese
aber nicht jedesmal auch neu.

juergen 4. Jun 2021 22:01

AW: Bei Windows 64 Bit kompilieren kommt Fehler: F2046 Zu wenig Arbeitsspeicher
 
Hallo zusammen,
ich weiß nicht wonach ich suchen muss.
Wie funktioniert es, dass ich die DevExpress-Sachen vorkompiliere, so dass mein Projekt die ganzen DevExpress-Sachen nicht jedes Mal mit kompilieren muss.

Vielen Dank!

hoika 4. Jun 2021 22:19

AW: Bei Windows 64 Bit kompilieren kommt Fehler: F2046 Zu wenig Arbeitsspeicher
 
Hallo,
indem du den Pfad mit den Pas-Dateien umbenennst,
oder die Pas-Dateien so verschiebst, dass Delphi sie nicht findet.

jaenicke 5. Jun 2021 12:39

AW: Bei Windows 64 Bit kompilieren kommt Fehler: F2046 Zu wenig Arbeitsspeicher
 
Wenn du die DevExpress Packages kompilierst, werden die .dcu Dateien im entsprechenden Ausgabeverzeichnis (in den Projektoptionen des Packages definiert) abgelegt. Nur dieses Verzeichnis muss in den Bibliothekspfad, nicht das, in dem die Quelltexte (.pas) liegen.

himitsu 5. Jun 2021 13:18

AW: Bei Windows 64 Bit kompilieren kommt Fehler: F2046 Zu wenig Arbeitsspeicher
 
Zitat:

Zitat von jaenicke (Beitrag 1490606)
Die Fremdkomponenten direkt im Projekt mit zu kompilieren macht keinen Sinn. Binde diese doch einfach in kompilierter Form ein, dann hast du bei der Projektgröße keinerlei Probleme in der Richtung mehr.

Ob die Fremdkomponenten als BPL oder direkt in die EXE kommen, ist dabei egal,

Aber der größte Vorteil ist, dass man diese Komponenten auch ohne Debuginfos kompilieren kann (ohne extra in deren Units das deaktivieren zu müssen), während der eigene Code mit Debuginfos kompiliert werden kann,
abgesehn davon dass das Kompilieren des eigenen Programms dann schneller geht (und das "Speicherleck" im Inlinecompiler nicht stört).


Darum gehörten PAS und DCU auch in separate Suchpfade -> einmal für den Compiler und einmal für den Debugger.
Letzterer dafür, wenn man die Komponenten mit Debuginfos kompiliert hatte, aber das Programm nur mit DCUs oder BPLs kompiliert hat.


Zitat:

Arbeitsspeicher habe ich genug (40GB).
Ja und? Ich hab meistens 50 GB frei (von 100GB)
und "haben" oder "frei haben" ist erstmal ein großer Unterschied, wobei dieses hier nur für das gesammte System gilt, aber nicht für einzelne Prozesse (Programme).

Die Delphi-IDE ist 32 Bit und hat daher nur 2 GB virtuellen Speicher für seinen Prozess. OK, seit paar Jahren fast 4 GB (3 GB in einem 32 Bit-Windows), da man diese Option inzwischen aktiviert hat.
Und selbst mit 1 GB RAM könnte man locker auch die 4 GB nutzen, wenn die Auslagerungsdatei groß genug ist.

Der Inline-Compiler nutzt den Speicher des IDE-Prozesses.
Wenn man über die Console kompiliert (DCC32), dann hat man noch bissl mehr freien Speicher, im Prozess.

Und eine Projektgruppe, mit zuvielen Projekten, kann/muß man dann eben stückchenweise kompilieren (nicht Alles auf einmal) ... wobei es auch hier über die Console besser geht, da jedes Projekt seinen eigenen DCC32 bekommt. (selbst wenn man die Projektgruppe via MSBUILD zusammen erstellen lassen würde)

juergen 5. Jun 2021 15:03

AW: Bei Windows 64 Bit kompilieren kommt Fehler: F2046 Zu wenig Arbeitsspeicher
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

vielen Dank für die Hinweise, die haben geholfen! :dp:

Nun werden nur noch ca. 41.000 Codezeilen kompiliert! :-)
In dem Bibliothekspfaden steht nichts mehr von "DevExpress". Man kann das auch schon direkt im Setup von DevExpress voreinstellen.

Allen noch ein schönes Wochenende!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf