Running out of memory

bearophile bearophileHUGS at lycos.com
Thu Dec 27 06:31:45 PST 2012


FG:

> But I also had to write s.length = 0 instead of either s = [] 
> or s = "".dup.

Also try:
s = null;


> I wonder why GC didn't reclaim the regions previously used by 
> the array before it an empty one was assigned to s.

Some explanations are in the article I've linked previously. Most 
of the other part of the answer comes from the fact that 
currently the D GC is not a precise GC. So randomly inbound 
pointers keep large memory chunks alive.


> Now, this delete looks like Python's kind of GC cheating. :)
> Personally, I don't have anything against it, but is it a valid 
> practice?

delete is deprecated in D. There is destroy(), and a replacement 
for delete in the memory/GC module.

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list