Parsers unique duplicated strings via a name table:
string udup(string s, ref string[string] nameTable)
{
if(s in nameTable)return nameTable[s];
string s1=s.dup;
nameTable[s1]=s1;
return s1;
}
This way you avoid extra duplicates. You can also try to free
file content manually when it's processed.