|
Boost : |
Subject: Re: [boost] request for interest in a garbage collection library
From: Sid Sacek (ssacek_at_[hidden])
Date: 2009-04-23 12:07:16
My 2-cents.
My first penny:
Although the thought of having memory-leaks become a concept of the past
is pretty nifty to me by using a memory-managing programming language,
the "garbage collectors" of today make no promises to the programmer
about any other type of resource. Brute-force programming and RAII are
our current protections against mismanaging these other resource types.
If we end up using RAII in our apps because object destructors must be
called in deterministic fashion, then the advantage of GC almost becomes
irrelevant.
My second penny:
There is one feature of an advanced GC that is super-beneficial to me
however. The C++/CLI garbage collector has the ability to perform data
compaction. Basically, when the GC activates, it removes the unused
objects, and then fills in the vacated memory gaps with existing live
objects, thus compressing memory usage. This ability can help you create
applications that can run 24/7 ( basically forever ) without having any
memory fragmentation. This to me is a better feature of the garbage
collector. I personally don't know how the CLI engine performs this neat
trick but it works, and the code generated by the compiler is crisp,
compact and efficient. I don't know if there's a C++ based GC library
out there that does this sort of thing.
Ok, one final cent:
The GC's provided within programming languages are much more compelling
than library-based ones. For me, the way they can be improved is by
following these simple rules:
1) Eliminate all object memory that is no longer referenced ( standard
feature )
2) Have destructor functions be called in a deterministic manner (
finalizers optional )
3) Have data compaction within the memory manager
4) Have the ability to manage other system resources as well
5) Provide the ability to manually manage specific resources ( for RTOS
)
The "Garbage Collector" should be ideally renamed to "Resource Manager".
Until these features mentioned above are given to me by a single
language infrastructure, I believe I will be forced to resort to RAII as
my most-trusted tool.
-Sid Sacek
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk