If I do the following... : foreach(string foo ; bigFilesList) { string file = cast(string)std.file.read(foo); } ...I run out of memory because the garbage collector apparently does not free previously loaded files, even though there isn't any reference left to them. ( I'm using D2.59, later versions do not seem to work with visualD ) Is it a bug?