Wir haben hier ein ähnliches Problem:
- 1-2 Mio Zeilen code, aber durch den Einsatz von Generics (in vielen typisierten Objektlisten) DCUs, die ca. 17 MB groß sind und nur Code enthalten
Ich habe ja seit langem schon in Verdacht, dass Generics (genauer einige Defekte in Implementierung/Design im Compiler) zu diesem Problem beitragen.
Siehe:
https://quality.embarcadero.com/browse/RSP-18080
Kann es sein, dass solche zirkularen Referenzen dazu beitragen, dass der Speicherverbrauch der
Ide beim Build stark ansteigt und nicht wieder freigegeben wird? Hat da jemand fundierte Erfahrung?
Nach meiner (fundierten?) Erfahrung machen zirkuläre
Unit-Referenzen sehr wohl Probleme und sind eine der Ursachen für z.B.
IDE-Instabilitäten und den Ausfall von Code Insight. Es kommt auch vor, daß man zwingend ein Build machen muss, weil ein simples Compile entweder fehlschlägt oder zu merkwürdigem Programmverhalten führt (häufig beim Debuggen).
Zirkuläre Referenzen sind mittlerweile das Erste, was ich bei einem bestehendem Projekt eliminiere, wenn ich es übernehme. Im Ergebnis hat man dann eine stabile und funktionsfähige
IDE (OK, Bugs gibt's immer). Compilieren geht zumindest gefühlt auch schneller.
Ach ja, ich kenne da ein hilfreiches Tool:
Unit Dependency Analyzer
Das ist aber auch nur Symptombekämpfung und aufgrund von fehlenden Sprachfeatures (z.B. partial Classes, Sichtbarkeit "internal", Extension Methods) oft leider die einzige Möglichkeit, bestimmte Architekturen zu realisieren. Wenn man nicht in der Lage ist, syntaktisch korrekten Code zu schreiben, weil die
IDE es nicht gerafft bekommt, ist das für mich Kategorie unterirdisch und disqualifiziert diese Sprache/
IDE, rosarote Brille oder Delphi Fan der ersten Stunde hin oder her.