A garbage collector for C++

Guo Mingnan <[email protected]> Tue, 25 Apr 2006 08:10:34 +0800 (CST)
Newsgroups gmane.comp.programming.garbage-collection.general
Message-ID <[email protected]>
Hello everyone.
   
  I have written a garbage collector for standard C++ application. It has following main features. 
   
  1) Deterministic Finalization
  Providing deterministic finalization, the system can manage resources as well as objects. The programming style is clear and easy, conforming to RAII (Resource Acquisition Is Initialization) idiom of C++ programmers. The memory usage is very efficient, acyclic garbage is reclaimed when the last reference to it is removed. A well-designed application, which eliminates cyclic data structure, does not need expensive garbage collection and is always running with minimum memory usage. 
   
  2) Accurate GC for C++
  It is a fully accurate tracing garbage collector. All garbage objects are identified by the system, no conservative stack frame guessing. Fully C++ optimization compiler support. 
   
  3) No Pause (less than 1us)
  In this system, all application codes automatically become fully interruptible and GC-Safe. Therefore, scavenge can start at any place without rendezvous requirement. A special concurrent tracing garbage collector successfully evades root-set scanning, and does not cause suspension of any thread at all. In the worst racing case, the latency is less than one microsecond (not millisecond). It is very satisfied for real-time systems.
   
  4) Small Overhead
  The runtime cost of application threads is far less than a normal reference counting. If there is no concurrently running scavenging action, there is no write-barrier overhead, no strong memory ordering requirement, no synchronization overhead. There is no extra code or data structure injected for GC safe point. The whole system does not require strong memory ordering, it is suitable for most modern processor architecture. Multi-processor concurrency can be further exploited by the multi-threading property of mutator and collector.
   
  5) Compatible Object Model
  As well as conventional C++, the system supports multiple-inheritance, object as member variables, and object arrays. Support C++ raw pointer, unions, bit-fields and hidden pointers. Support C++ templates. Support native object and tracing.
   
  6) Widely Portable
  Even conducting an accurate tracing, the system does not require any special information from compiler. Application can use any standard C++ compiler, such as Visual C++ 8 and GCC. There is no special platform requirement, such as Win32 system call: SuspendThread, GetWriteWatch, etc. Even virtual memory support is not necessary. Thus, it can be ported to a wider area.
   
  Does anyone have any interest in this system? Any comments are welcome!
   
  Mingnan G.
  [email protected] 

		
---------------------------------
 禄垄1G芒路ぢ懊路掳路卢禄酶