GC allocation issue

Etienne etcimon at gmail.com
Thu Mar 20 13:48:19 PDT 2014


I'm running some tests on a cache store where I planned to use only 
Malloc for the values being stored, I'm hoping to eliminate the GC in 
95% of the program, but to keep it only for actively used items..

My problem is: when the program reaches 40MB it suddenly goes down to 
0.9MB and blocks.

 From every resource I've read, the understanding that came out is that 
the GC will stop all threads and search for pointers for data that was 
allocated only by the GC (using addRange or addRoot to extend its 
reach). This means that in the worst case scenario, there could be 
leaks, but I'm seeing the data being deleted by the GC so I'm a little 
stomped here. What am I missing?

I'm using FreeListAlloc from here:
https://github.com/rejectedsoftware/vibe.d/blob/master/source/vibe/utils/memory.d#L152
in here:
https://github.com/globecsys/cache.d/blob/master/chd/table.d#L1087
and this is how I made it crash:
https://github.com/globecsys/cache.d/blob/master/chd/connection.d#L550

I know it's the GC because using GC.disable() fixes it, so I'm only 
really asking if the GC has a habit of deleting mallocated data like this.


More information about the Digitalmars-d-learn mailing list