[dmd-internals] Memory Leak
Walter Bright
walter at digitalmars.com
Wed Nov 14 00:49:55 PST 2012
On 11/14/2012 12:38 AM, David Held wrote:
> On 11/13/2012 11:27 PM, Walter Bright wrote:
>> [...]
>> Since the GC is already there and works, I'd say it's easier to try that
>> route first. Some simple things I'd do to try and speed it up that are
>> specific to dmd:
>>
>> 1. disable all the threading lock code
>>
>> 2. tune it so it doesn't try to do a collection until more than 1Gb is allocated
>
> My understanding is that it's a mark/sweep collector. Is that correct?
Yes.
> Is it even feasible to implement a copying collector, or does dmd do dirty
> things with pointers that make that problematic?
What makes it problematic is you cannot do a copying collector without having
type info for all the references. C compilers do not generate that.
> My understanding of GC is that mark/sweep is better if the number of surviving
> objects is large relative to the total pool, and copying is better if the
> number is small. Does dmd tend to create mostly short-lived or long-lived
> objects?
I don't really know.
>
> Obviously the string table is long-lived, and I assume the symbol table as
> well. It seems that most of the rest of the work is more short-lived. If I'm
> right, then it probably isn't feasible to make the mark/sweep collector very
> fast/efficient, because it's spending too much time sweeping.
>
> Of course, the generational model combines the best of both worlds, but
> somehow, I really doubt that the existing GC is generational. ;)
It isn't, and neither is the Boehm one.
More information about the dmd-internals
mailing list