----- Original Message ----- From: "James Mastros" <[EMAIL PROTECTED]> To: "Dan Sugalski" <[EMAIL PROTECTED]> Cc: "Benoit Cerrina" <[EMAIL PROTECTED]>; "Uri Guttman" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Monday, November 05, 2001 12:03 AM Subject: Re: vmem memory manager
> On Sun, Nov 04, 2001 at 01:47:44PM -0500, Dan Sugalski wrote: > > I've not made any promises as to what type of GC system we'll use. I'm > > gearing things towards a copying collector, but I'm also trying to make > > sure we don't lock ourselves out of a generational scheme. > I'd really like to hear that you were planning on not locking us out of > /any/ scheme. I'd like to see a lot of pluggablity here, so we can get > custom solutions for those needing multiprocessor, huge memory optimized > schemes, and with tiny machines with poor processors, or on a handheld with > tiny memory. Hell, even segmented memory, if they're really brave. > > > I know things are a little fuzzy in the GC arena, but that's on purpose for > > the moment. > Hell. I've got very, very little knowlage about gc. But I'd love to see > the GC pluggable to the point where different modules can have different > GCs... but I don't think it's reasonably possible. This is very important since in the GC world one size does not fit all, you can have either a very efficient algorythm which will 'stop the world' and collect everything but it may appear as if your program stops from time to time... This is bad for all interactive or real time apps but good for batches. You may also have 'incremental' or 'real time' collector which only stop the mutator (the program) for a small and/or bounded time, those are better for the above apps but they loose in efficiency (they take more space and time). You also have concurrent collectors which are ideal for multiprocessors but take a penalty hit which is unacceptable for single processor systems. I think that the only good solution is one where one may choose its collector at the time the app is launched. This is also what java does, with sun's jdk (and probably with others) at launch time command line args let you choose between an efficient stop the world and collect algo, an incremental algorythm (the train algorythm (http://www.daimi.au.dk/~beta/Papers/Train/train.html) or a concurrent algorythm (don't know the algo used) Benoit > > Without doubt, there should be a way for parrot code to modify the > properties of the GC, like the frequency of calling, and to specify "run the > GC now". > > -=- James Mastros