![]() |
AW: XE3-Compiler-Speicherleck
Zitat:
|
AW: XE3-Compiler-Speicherleck
Zitat:
UPDATE: Hab da doch noch eine Idee. Der generierte Code, der in den DCU Dateien liegt sollte sich möglicherweise zusammenfassen lassen. Ich müsste mich also beim Laden der DCU einklinken und die Daten in einen anderen "Unit-Share" Speicherbereich auslagern und beim Freigeben diesen der Unit diesen auch freigeben. Dadurch würden nur noch die Symbole, Typen, Prozedure-Definitionen Platz weg nehmen. Wieviel sich da einsparen lässt muss ich aber vorher noch herausfinden, nicht das ich mir die Arbeit für ein paar Bytes mache. |
AW: XE3-Compiler-Speicherleck
Ist der Fehler (Embarcadero) schon bekannt? Falls nein, könnte das mal bitte jemand dort veröffentlichen? Oder wengistens Herrn Eissing darob informieren?
|
AW: XE3-Compiler-Speicherleck
Zitat:
|
AW: XE3-Compiler-Speicherleck
@Delphi-Laie: Jupp, denen isses bekannt.
Zitat:
@jbg: Eventuell kannst man auch nur einfach das provuzieren, wie denn man ein Projekt schließt und es wieder öffnet ... also einfach nur den ganzen Cache leeren und auf Anfang zurücksetzen. (falls das einfacher ist) |
AW: XE3-Compiler-Speicherleck
Zitat:
|
AW: XE3-Compiler-Speicherleck
Wenn Emba den meisten Cachespeicher in MMFs (mit 'ner Tempdatei verknüpft) legen würde, dann könnte selbst die 32 Bit IDE wesentlich mehr Speicher im RAM haben, als nur poplige 32 Bit.
(mit Datei kann man mehr Speicher verschwenden, und müllt die PageFile nicht voll) Bei Speichermangel (für Windows) wird es in die Datei geschrieben und ansonsten würde die Windows das Wichtigste die meiste Zeit im RAM cachen. |
AW: XE3-Compiler-Speicherleck
Das ist leider kein Cache im Sinne eines Caches. Die DCU Datei wird eingelesen und dann alle Referenzen, die in der DCU als Index liegen in Pointer umgewandelt. Danach wird während des Kompilierens/Linkes Änderungen an den geladenen Symbolen gemacht (insbesondere Flags). Es fehlt einfach die Trennung zwischen statischen Daten und Arbeitsdaten. Somit kann man nichts zusammen fassen und mit MMFs kann man sich auch nicht behelfen, da schon allein beim Laden der DCUs Änderungen notwendig sind (=> Referenzen auflösen).
Das mit dem generieren Code Zusammenfassen bringt nicht viel. Bei dem Demoprojekt kommen da gesamt gerade einmal 77 MB zusammen. Wenn da doppelte zusammengefasst werden wird es wahrscheinlich auf unter 20 MB fallen, aber das sind Peanuts im Vergleich zu den anderen 600 MB. |
AW: XE3-Compiler-Speicherleck
Zitat:
Nja, zumindestens ist mir nun die IDE nicht mehr unter den Fingern wegverreckt. (werde jetzt ja gewarnt :) ) |
AW: XE3-Compiler-Speicherleck
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe jetzt mal deine Idee mit dem "Aufräumen der Units" in den DCC Memory Analyzer eingebaut. Mit der CheckBox kannst du das "Feature" (de)aktivieren um einen Vergleich zu haben.
Wenn die Checkbox gesetzt ist, werden vor dem Kompilieren eines Projekts sämtlichen Units aller anderen Projekte (in allen Platformen) freigegeben. Ich kann nicht garantieren, dass die IDE bzw. der Compiler sich dabei normal verhalten. Interessant wäre es, wie sich CodeInsight, ErrorInsight, HelpInsight, der Debugger und der Compiler sich verhalten. Funktioniert das Debuggen in ein "anderes (DLL/BPL) Projekt" noch, sieht man die Symbole, ... Viel Spaß beim Testen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 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