D - helping out the GC
- Ben Hinkle (26/26) Feb 29 2004 Thinking more about GC performance, what do people
- Cloud9 Virtual (14/18) Mar 01 2004 I have been looking into this as I am interested in a real time garbage
- =?iso-8859-1?Q?Robert_M._M=FCnch?= (24/42) Mar 02 2004 Hi, I'm reaching the point in my Dernel kernel, where I want to get the ...
Thinking more about GC performance, what do people think about adding some features to help it out? I'm thinking of "hints" that the programmer can put in D code to give the GC more information about what is going on. For example, assuming a generational GC will eventually be used in phobos, it would help out the GC to tell it if an object should immediately go into an old generation - many times I know when something will hang around for a while or if something is just going to be used for a few calls and then be gone. Or maybe a way to mark an object as garbage as soon as all stack/register references to it are gone. Maybe with custom allocators no language changes would be needed - I don't know. Also putting in a hook after gc_init to allow main() to set various GC parameters (before actually allocating anything) would be nice. For example Sun's Java GC implementation has command-line switches for customizing the GC behavior. I'm not a GC expert by any means but I've used Java extensively and I know how important it is to be aware of memory management even with GC - at least for large scale programs. Or if people know about links to "user driven" GC that would be nice, too. -Ben
Feb 29 2004
Ben Hinkle wrote:Or if people know about links to "user driven" GC that would be nice, too.I have been looking into this as I am interested in a real time garbage collector; Unfortunately all the newer research on this topic is proprietary, patent-pending etc. You may want to get this book: http://www.amazon.com/exec/obidos/tg/detail/-/0471941484/qid=1078171665/sr=1-8/ref=sr_1_8/102-8829146-1694527?v=glance&s=books It's the only book I know that summarises the publicly available GC tech. to date. I also have links to various research papers; each GC strategy in existance can be the best performer depending on program allocation patterns (even the classical mark/sweep implemented currently in D). What researchers do now is experiment with dinamically switching the GC strategy at runtime. The research tool of choice is the Jikes JVM.
Mar 01 2004
On Sun, 29 Feb 2004 17:38:14 -0500, Ben Hinkle <bhinkle4 juno.com> wrote:Thinking more about GC performance, what do people think about adding some features to help it out?Hi, I'm reaching the point in my Dernel kernel, where I want to get the GC stuff up and running. At the moment, the interface works but I use a stupid "just allocate" strategy with no-frees at all ;-). So we can play around with this.I'm thinking of "hints" that the programmer can put in D code to give the GC more information about what is going on. For example, assuming a generational GC will eventually be used in phobos, it would help out the GC to tell it if an object should immediately go into an old generation - many times I know when something will hang around for a while or if something is just going to be used for a few calls and then be gone.I used to use memory-pools in C++. IMO if we can tell the GC, to setup pools for specific classes/structs and provide an estimated life-time, this could help selecting the best allocation strategy. One other way would be to use templates for specialized GC implementations. In this case, you would instantiate exactly the best set of functions for your app. The GC would become spezialized for each app. I once came across a GC framework based on templates for C++. I need to have a look, if I still have this information.Also putting in a hook after gc_init to allow main() to set various GC parameters (before actually allocating anything) would be nice. For example Sun's Java GC implementation has command-line switches for customizing the GC behavior.I like the template approach most. With run-time configuration you always have to carry around the complete code to handle everything. But the GC should become a highly specialized implementation fitting the current app.Or if people know about links to "user driven" GC that would be nice, too.There is a GC project called "frankestein": http://www.cs.washington.edu/homes/pardy/research/gc/ I'm highly interested in this topic WRT Dernel. Understanding the GC code etc. is a necessary step, so any help is welcome :-)) -- Robert M. Münch Management & IT Freelancer http://www.robertmuench.de
Mar 02 2004