Re: My arguments
David Jeske <[email protected]> Tue, 12 Aug 2003 13:54:30 -0700
| Newsgroups | gmane.comp.gnome.mono.garbage-collection |
|---|---|
| Message-ID | <20030812135430.P29712@mozart> |
On Tue, Aug 12, 2003 at 01:21:33PM +0200, Fernando Diaz wrote: > I have been made an study about the different techniques for a garbage > collector for a month. I am interseted to know what questions you were studying. When deciding whether or not I can write a piece of software with a garbage collected system, I ask myself: 1) what is the worst case pause time for my expected heap size 2) what is the throughput of the collector when large amounts of memory are deallocated 3) how does the collector (and environment) interact with data accessable through modules written in C Did you consider anything related to those questions? > I think that Mono needs a collector that make the allocation process the > simpliest it could be, then i refused the Mark-Sweep and Non-Copying > Collection, because they have the problem of fragmentation what guide us > to a complex allocator. I think that the current libgc is "as simple as can be" because someone else wrote it already. Writing another collector aught to have much more aggressive goals than this to make it more useful than libgc. I think the goal should be to help Mono come closer to the performance of hand-coded C++. This means no pausing at all, even for really large heaps. C++ already uses malloc(), so doing something similar is not a problem. > The same as Mark-Compact ocurrs in Copying Collection. The problem with > them is that we need to rebuild the references to the objects after a > collection, because the objects will me moved from their original > location into the heap. I don't understand. The objects are moved in both copying collection and the compact phaze of mark-compact. Can you explain why you think copying collectors are a problem while mark-compact are not? > A generational adaptation of these algorithms would be good, it > would make them more efficient. But an incremental adaptation would > make them more complex and it would give them a few advantages. When I'm writing a piece of useful interactive software (web-server, client application), I will happily give up 30-50% of my CPU if I have to, but I cannot accept uncontrolled pauses. That's why I'm happier writing software in slow reference counted languages like Python, than fast GC-pausing languages like Java. Therefore, the collector must either be incremental (tri-color, reference counted, etc..) or fully concurrent with the application. If we're not going to achieve that, we might as well just keep using libgc. -- David Jeske (N9LCA) + http://www.chat.net/~jeske/ + [email protected] _______________________________________________ Mono-gc-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-gc-list