Это недокументированная фича CODESYS.
Если вы объявили RETAIN внутри Program или Function Block, то это компонент полностью со всеми своими переменными пишется в RETAIN. И памяти расходуется сильно больше.
Чтобы этого избежать Retain лучше всего запихнуть в отдельный GVL(Global Variables List).