Disabling GC in D
cym13 via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jan 21 14:34:43 PST 2016
On Thursday, 21 January 2016 at 22:20:13 UTC, Dibyendu Majumdar
wrote:
> On Thursday, 21 January 2016 at 22:15:13 UTC, Chris Wright
> wrote:
>>
>> Finally, you can use gc_setProxy() with a a GC proxy you
>> create. Have it throw an exception instead of allocating. That
>> means you will get crashes instead of memory leaks if
>> something uses the GC when it shouldn't.
>>
>> gc_setProxy() and struct Proxy seem not to be part of the
>> public runtime. You can copy the definitions into your own
>> project -- they're listed as extern(C) to make that easier.
>> This may tie you to specific DMD revisions in the case that
>> the GC interface changes.
>
> Thanks - I am looking for an option where no GC memory
> allocation is possible so above looks like the solution.
>
> Regards
Out of curiosity, why would you force not being able to allocate
memory? I understand wanting to disable automatic collection of
memory as it may pause the threads but an allocation through the
GC is just like any other allocation.
Besides you don't need to disable allocations not to use the GC,
you just need not to use the GC. What I mean by that is that if
allocation is disabled and your code needs to allocate through
the GC, your program will crash. So you'll design your code so
that you don't allocate through the GC. But then as your code
doesn't use the GC it doesn't matter wether allocation is
possible or not. If your code doesn't use the GC then the GC
isn't used, no collection, no pause, nothing. So I don't quite
see the point of disabling allocation.
On the other hand disabling collection makes sense, you can still
allocate if you need to (to allocate an exception or an error for
example, in such case it doesn't matter much if memory is
collected as the program terminates).
Sooo.... where's the catch?
More information about the Digitalmars-d-learn
mailing list