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.