My favorites | Sign in
Project Logo
                
Code license: New BSD License
Labels: gc, allocator, memory
Show all Featured wiki pages:
ExampleVector WeakTable
People details
Project owners:
  cloudwu

This garbage collector uses a mark-sweep algorithm . Unlike BDW conservative garbage collector , it doesn't guess the pointer . So you should link the objects (memory block) manually by call gc_link . Namely , you should tell the collector that a memory block's life time depends on the correlative one's .

On the other hand, you should give the scope of temporary variable on the stack manually. It will be easy if you call gc_enter at the first line of the function, and call gc_leave at the last line. btw, you don't need to call gc_enter / gc_leave every time. For example, you can only call gc_enter before your main loop and call gc_leave after the main loop returned. (It may waste some memory, but it works.)

If you have done those correctly , gc_collect will be able to determine which memory block won't be accessed any longer, and then free them.

ps. Another description here , if you can read Chinese.









Hosted by Google Code