Do you use D's GC?
Gregor Mückl
gregormueckl at gmx.de
Sat Aug 14 19:54:52 UTC 2021
On Tuesday, 3 August 2021 at 14:34:19 UTC, Steven Schveighoffer
wrote:
> On 8/3/21 5:15 AM, Gregor Mückl wrote:
>> The D garbage collector seems reasonable for applications with
>> small (object sized) allocations. But that changes when you
>> allocate large blocks of memory: due to a bug internal to the
>> tracking of allocated pages, performance gradually degrades
>> over time. So if you have to allocate large(ish) buffers
>> regularly, it'll show over time. I reported that bug here with
>> a repro case, but it didn't get any attention yet:
>>
>> https://issues.dlang.org/show_bug.cgi?id=20434
>>
>> I haven't managed to understand thag part of the GC enough to
>> submit a patch myself :(.
>
> Is that repro case doing what you think it is doing? It appears
> to keep adding more and more larger allocations to the mix.
>
> It seems you are calculating a `size` variable and never using
> it.
>
> I think possibly you meant to use `size * 1024 * 1024` instead
> of `i * 1024 * 1024`.
>
> In regards to the conservative nature of the GC, the larger the
> blocks get, the more chances they get "accidentally" pointed at
> by the stack (or some other culprit). 64-bit memory space
> should alleviate a lot of this, but I think there are still
> cases where it can pin data unintentionally.
>
> -Steve
I apologize for not replying earlier. I was very busy with real
life stuff since I posted this.
Also, I feel REALLY embarrassed. You are right. I am sorry for
wasting time with this. I was 100% certain that my code was right
when I opened the bug report and I am sure that I checked it
multiple times. But going back to the example program I have
locally, it clearly contains this stupid bug.
I fixed the allocation size as you said and now I can't reproduce
the behavior I remember. I've checked several dmd builds between
2.088 and 2.096 again and it doesn't show.
So the GC is just fine after all - and I've made an idiot of
myself. Again.
More information about the Digitalmars-d
mailing list