Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.211 Beiträge
 
Delphi 12 Athens
 
#1

XE3-Compiler-Speicherleck

  Alt 23. Okt 2012, 23:19
Kennt sich zufällig jemand im Delphi aus und kann bei der Suche helfen?

Wie in http://www.delphipraxis.net/170973-a...bstuerzen.html aufgefallen ist, besitzt der Compiler ein nettes Speicherleck, welches Delphi recht schnell komplett verrecken läßt.

Beim Kompilieren steigt der Speicher gnadenlos an und bei knapp 1,3 GB (laut Taskmanager) kommt dann ein OutOfMemory und ab da kann man mit Delphi praktisch nicht mehr arbeiten.
Wenn das AQ-Time-Package noch im Delphi registriert ist, dann reagiert Delphi mehrere Minuten garnicht mehr und stützt schlußendlich ab.

Ich hab jetzt erstmal nur einen kurzen Test gemacht und Speicher gesucht, welcher neu reserviert wurde (über VirtualAlloc bei Windows).
In den beiden Dateien wurde alles gelöscht, was kurz vor dem Kompilieren bereits reserviert war. Dieses befindet sich in den Dateien/Speicherabbildern und der Rest wurde mit 0 gefüllt.

Was komisch ist, daß sich der größte Teil wieder verflüchtigt (bis auf 100-200 MB), wenn man Datei > Alle Schließen ausführt , was also bedeuten würde, daß der Speicher entweder an den Projekten oder an der Projektgruppe hängt.

Ein kleiner Teil des zusätzlichen Speichers kommt eventuell von den DDevExtensions (das einzige Plugin, welches aktuell in meinem XE3 rumgammelt),
aber auch ohne die DDevExtensions zeigt sich dieses Problem noch, womit es nicht am Andreas liegt.

Ach ja, mein Testprojekt ist eine Projektgruppe aus allen Projekten/Packages/Demos des PHP4Delphi, welche ich kompilieren lasse.
> 3 kleine BPLs, davon ein Laufzeitpackage (es ist aber egal, ob dieses installiert ist, oder nicht)
> 26 winzige DLLs und 21 knuffige EXEen

http://fnse.de/DL/Debug.7z (130 MB)
Project3.exe.mem3_1 - enthält die zusätzlichen 602 MB kurz nach dem Kompilieren
Project3.exe.mem3_2 - enthält die zusätzlichen 349 MB nachdem alle Dateien geschlossen wurden.



(kleinere) Speicherlecks im Command-Line-Compiler sind ja relativ unproblematisch, da Dieser eh nicht lange lebt, aber wenn sowas die IDE mehrmals am Abend vis zum Rand vollmüllt, dann macht das keinen Spaß.
Und ich kann auch nicht alle 5 Minuten in den Taskamanger gucken, um notfalls rechtzeitig den Speicher zu leeren und alles neu zu laden, bevor es abstürzt und ich nicht mehr speichern kann.

Die kompletten Speicherabbilder komprimieren grade ... also falls jemand mehr braucht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Okt 2012 um 23:25 Uhr)
  Mit Zitat antworten Zitat