[Gc] Collecting large memory blocks
christian at gudrian.org
Wed Dec 2 05:23:51 PST 2009
I am using the most recent CVS version of the collector under Win32
compiled with C++Builder6.
I wrote a simple test program to verify the operation of the collector
under different conditions. During the tests I constantly monitor the
values of GC_get_heap_size() and GC_get_free_bytes() to judge if certain
memory blocks which became unreachable got collected. This of course
involves manually calling GC_gcollect() to force a collection cycle.
I discovered that large memory blocks do not get reclaimed once they
become unreachable. For example:
GC_MALLOC(100000) -> gets collected during the next cycle
(GC_get_free_bytes() increases accordingly)
GC_MALLOC(1000000) -> never gets collected
(GC_get_free_bytes() does not increase)
Apart from the amount of memory allocated both calls take place under the
Is this behaviour intended, and if so: why?
More information about the Gc