![]() |
Delphi-Version: XE3
Generics / Speicherprobleme in der IDE
Hallo,
da bei uns die IDE regelmäßig wg. Speicherproblemen abstürzt, bin ich mal auf die Suche gegangen, warum die DCUs eines Moduls so groß werden. Hauptgrund scheint zu sein, dass durch die Generics unser Objektmodell zu umfangreich wird (größte DCU: 14MB). Nach einer Analyse mit MapFileStats ( ![]() Jetzt nun die Frage, gibt es irgendeine Möglichkeit / Strategie, dieses Dilemma zu umgehen? Sollte man wieder eigene Collectionklassen schreiben (oder für jeden Typ eine Ableitung von TCollection erzeugen)? Wie seid ihr mit dem Problem umgegangen? Einerseits möchte man ja die Typsicherheit von generischen Listen behalten, andererseits nützt die einem auch nix mehr, wenn man nach jedem Compilieren Delphi neu starten muss. PS: Die üblichen Einstellmöglichkeiten (Projektoptionen) haben wir schon durchprobiert. Und ja, wir verwenden RTTI im Objektmodell. Und wir kompilieren Debug-Infos mit ein, damit im Fehlerfall Zeilennummern mit ausgegeben werden. Laufzeitpackages sind auch aktiv, allerdings nur für die gängigen Delphi-Packages (vcl,rtl, ..). |
AW: Generics / Speicherprobleme in der IDE
Die aktuelle Implementierung der Generic ist in Bezug auf den Speicherverbrauch sicher noch verbesserungsfähig. Eine geschicktere Implementierung für Collections findest du allerdings im
![]() |
AW: Generics / Speicherprobleme in der IDE
Mehrfach vorkommende Typen und Typen, die als Parameter genutzt werden, nur einmal pro Projekt definieren und dann diesen Typ verwenden:
Delphi-Quellcode:
Dann muss dieser Typ nur einmal ins Objektmodell.
TMyIntList = TList<Integer>;
TMeinObject = class FIrgendeineListe: TMyIntList procedure tueWas(const liste: TMyIntList); ... |
AW: Generics / Speicherprobleme in der IDE
Zitat:
Hintergrund Info, wie das gelingt: Da die Spring4D Collection Types alle über Interfaces geregelt sind, kann man hinter eine IList<TKunde> "einfach" eine TObjectList<TObject> hängen. Das geht aber nunmal bei puren klassenbasierten generischen Listentypen nicht (und nein, auch die verzweifelten Versuche in XE8 ändern da nix dran). Zitat:
|
AW: Generics / Speicherprobleme in der IDE
Das macht den erzeugten Code größer, klar. Aber das soll eine Ursache für das "Out of Memory"-Problem in der IDE sein?
|
AW: Generics / Speicherprobleme in der IDE
Zitat:
Aber genau kann das glaub ich, Andreas beantworten. |
AW: Generics / Speicherprobleme in der IDE
Zitat:
|
AW: Generics / Speicherprobleme in der IDE
Zitat:
|
AW: Generics / Speicherprobleme in der IDE
Zitat:
Wie sind die Konditionen? (Freeware, OpenSource, Shareware, zeitlich begrenzte Testversion, ... ) |
AW: Generics / Speicherprobleme in der IDE
Zitat:
Beispiel:
Delphi-Quellcode:
TDataCache = TObjectDictionary<string, TList<TData>>
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 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 by Thomas Breitkreuz