Minimize GC memory footprint
Bastiaan Veelo
Bastiaan at Veelo.net
Fri Feb 5 22:46:05 UTC 2021
On Wednesday, 3 February 2021 at 13:37:42 UTC, frame wrote:
> I have to deal with GC as long I want to use other libraries
> that are relying on it or even just phobos.
>
> Conclusion so far (for Windows):
>
> 32bit:
> - GC just doesn't work at all
?? Do you mean no collections happen? 32bit GC should just work.
> 64bit:
> - Collections are rare. It can be necessary to call
> GC.collect() manually.
> - Scope guards to explicit clean up / free memory at function
> exit have no deep impact on most cases.
> - If your application should save memory call GC.minimize()
> when it's appropriate.
>
>
> It seems that calling GC.enable() if it's already enabled just
> disables the automatic GC again? Is this a bug? I cannot
> reproduce it outside my application yet since it's not clear
> when the GC starts collecting, but it always shows the same
> behaviour:
>
>> // GC.enable();
> Case A: The app is very kind in memory usage (~20 MB)
>
>> GC.enable();
> Case B: The app is consuming huge amount of memory (~900 MB)
>
>> GC.disable();
>> GC.enable();
> Case A again
>
>> GC.disable();
>> GC.enable();
>> GC.enable();
> Case B again
That looks like a bug indeed.
> I also have to struggle what the specs' text actually mean:
>
>> This function is reentrant, and must be called once for every
>> call to disable before automatic collections are enabled.
I think it means that you need to make sure that enable() is
called as many times as disable() is called before collection can
happen automatically.
— Bastiaan.
More information about the Digitalmars-d-learn
mailing list