Minimise and collect by GC when OutOfMemory

Chris Wright via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Feb 26 08:29:29 PST 2016


On Fri, 26 Feb 2016 05:47:08 +0000, tcak wrote:

> Would it be a good idea to call "collect" and "minimize" methods of
> core.memory.GC when OutOfMemory error is received FOR A LONG RUNNING
> PROGRAM? or there won't be any benefit of that?
> 
> Example program: A web server that allocates and releases memory from
> heap continuously.

If OutOfMemoryError is thrown, the GC has already done everything it can 
to try to get more memory to use. If you find a case in which it helps to 
call GC.collect and GC.minimize, it's a bug that the GC threw an 
OutOfMemoryError.

...usually. If you are running on a 64-bit Linux system that has 
overcommit turned off and more address space than RAM + swap, you can get 
some mileage from GC.minimize() after OutOfMemoryError. Detecting this 
situation isn't necessarily easy, which is why the GC doesn't do it 
already.


More information about the Digitalmars-d-learn mailing list