Wenn in den Daten viele Strings doppelt vorkommen, hilft vielleicht
String Interning. Das hat mir mal sehr geholfen, den Speicherbedarf einer Anwendnung zu reduzieren. Dadurch werden doppelte Strings zu einem einzigen zusammengefasst, der dann entsprechnend einen höheren Referenzzähler hat.
Eine Implementation auf Basis einer Stringlist findest Du z.B.
in meiner dzlib. Die ist allerdings noch für AnsiStrings entwickelt und mit UnicodeStrings nicht getestet.