Эта статья Embarcadero, в которой обсуждаются проблемы с памятью для XE7 IDE, содержит следующее:
Помните о "росте по дженерикам"
Другой сценарий, который может зависеть от вашего кода приложения и вызвать увеличение памяти, используемой компилятором и отладчиком, связан с тем, как используются общие типы данных. Способ работы компилятора Object Pascal может приводить к генерации множества разных типов на основе одного и того же общего определения, иногда даже полностью идентичных типов, которые скомпилированы в разных модулях. Хотя мы, конечно, не рекомендуем удалять дженерики, напротив, есть несколько вариантов:
- Старайтесь избегать ссылок на круговые единицы для единиц, определяющих основные типы типов.
- Определите и используйте те же определения конкретного типа, когда это возможно.
- Если возможно, генераторы-рефакторики для совместного использования кода в базовых классах, из которых общий класс наследует
Последний элемент, который я понимаю. На первых двух я менее четко понимаю.
Эти проблемы влияют только на производительность IDE или влияет на размер скомпилированного кода?
Например, учитывая второй элемент, если я объявляю TList<Integer>
в двух отдельных единицах, я получу два отдельных фрагмента кода в каждом из этих блоков в моем исполняемом файле? Я, конечно, надеюсь, что нет!