== Quote from nobody (n...@where.com)'s article
> > One thing you could try is disabling the GC (this really just disables 
> > automatic
> > running of the collector) and run it manually at points that you know make 
> > sense.
> >  For example, you could just insert a GC.collect() statement at the end of 
> > every
> > run of your main loop.
> > Another thing to try is avoiding appending to arrays.  If you know the 
> > length in
> > advance, you can get pretty good speedups by pre-allocating the array 
> > instead of
> > appending using the ~= operator.
> > You can safely delete specific objects manually even when the GC is 
> > enabled.  For
> > very large objects with trivial lifetimes, this is probably worth doing.  
> > First of
> > all, the GC will run less frequently.  Secondly, D's GC is partially 
> > conservative,
> > meaning that occasionally memory will not be freed when it should be.  The
> > probability of this happening is proportional to the size of the memory 
> > block.
> I have tried all these: with GC enabled only periodically runs in the main 
> loop,
> however the memory still grows faster than I expected when I feed more data 
> into
> the program. Then I manually delete some specific objects. However the program
> start to fail randomly.
> Has anyone experienced similar issues: i.e. with GC on, you defined you own 
> dtor
> for certain class, and called delete manually on certain objects.
> The program fails at random stages, with some stack trace showing some GC 
> calls
like:
>  0x0821977a in _D2gc3gcx3Gcx16fullcollectshellMFZk ()
> I suspected the GC is buggy when mixed with manual deletes.

I personally have not experienced this.  Please be more specific:

D1 or D2?
If D1, Phobos or Tango?
DMD, LDC, or GDC?
Compiler version?

Also, please file a bug report, especially if you can create a concise,
reproducible test case.

Reply via email to