Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
September 23, 2009 What if gc.disable at all | ||||
---|---|---|---|---|
| ||||
Greeting to everybody, If this is too silly a question,please just ignore it. I was wondering what if GC is turned off during the lifetime of the application?Just as if D is a better,safer/unsafer C with class?Can't work?Or some special stuff need to handle? Thanks for your help in advance. Regards, Sam |
September 23, 2009 Re: What if gc.disable at all | ||||
---|---|---|---|---|
| ||||
Posted in reply to Sam Hu | On Wed, Sep 23, 2009 at 8:14 AM, Sam Hu <samhudotsamhu@gmail.com> wrote:
> Greeting to everybody,
>
> If this is too silly a question,please just ignore it.
>
> I was wondering what if GC is turned off during the lifetime of the application?Just as if D is a better,safer/unsafer C with class?Can't work?Or some special stuff need to handle?
>
> Thanks for your help in advance.
> Regards,
> Sam
>
You can do it. You have to avoid some features - setting array length, concatenating/appending arrays, using associative arrays in any way - but other than that it works fine. One thing you'll notice though is that D1 makes it very difficult to do any kind of automated manual memory management. D2 at least gives you struct destructors and postblits, which makes writing something like a C++ smart_ptr within reach.
|
September 23, 2009 Re: What if gc.disable at all | ||||
---|---|---|---|---|
| ||||
Posted in reply to Sam Hu | Hello Sam, > Greeting to everybody, > > If this is too silly a question,please just ignore it. > > I was wondering what if GC is turned off during the lifetime of the > application?Just as if D is a better,safer/unsafer C with class?Can't > work?Or some special stuff need to handle? > There are some parts of D (like AA) that allocate memory from the GC but for which it would be hard to impossible for the programmer to tell when to deallocate. If you use these features while the GC is off, you will leak memory untill you turn it back on (at that point the GC will clean it up). In some short lived programs this is no problem. > Thanks for your help in advance. > Regards, > Sam |
September 24, 2009 Re: What if gc.disable at all | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jarrett Billingsley | Thank you all for your help! Regards, Sam |
September 24, 2009 Re: What if gc.disable at all | ||||
---|---|---|---|---|
| ||||
Posted in reply to BCS | BCS wrote: > Hello Sam, > >> Greeting to everybody, >> >> If this is too silly a question,please just ignore it. >> >> I was wondering what if GC is turned off during the lifetime of the >> application?Just as if D is a better,safer/unsafer C with class?Can't >> work?Or some special stuff need to handle? >> > > There are some parts of D (like AA) that allocate memory from the GC but for which it would be hard to impossible for the programmer to tell when to deallocate. If you use these features while the GC is off, you will leak memory untill you turn it back on (at that point the GC will clean it up). In some short lived programs this is no problem. As for AAs, you should be able to replace them with Tango's tango.util.container.HashMap with the tango.util.container.Container.Container.Malloc (or .Chunk) allocator. It might be tricky to find memory leaks due to accidental GC usage, but you could e.g. hook the GC methods ( http://dsource.org/projects/kong ) (or modify the GC) and print stack traces in them. -- Tomasz Stachowiak http://h3.team0xf.com/ h3/h3r3tic on #D freenode |
September 25, 2009 Re: What if gc.disable at all | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tom S | Tom S Wrote: > As for AAs, you should be able to replace them with Tango's tango.util.container.HashMap with the tango.util.container.Container.Container.Malloc (or .Chunk) allocator. > > It might be tricky to find memory leaks due to accidental GC usage, but you could e.g. hook the GC methods ( http://dsource.org/projects/kong ) (or modify the GC) and print stack traces in them. > > > -- > Tomasz Stachowiak > http://h3.team0xf.com/ > h3/h3r3tic on #D freenode Ah yes,I once translated most of Tango's tango.util.container.* into D2 excluding one or two modules which heavily depends on Tango other modules.It get compiled.However,the test program crashed with below error message: Error 42:Symbol Undefined _D5tango4core6Memory2GC6addrOfFpvZPv ---errorlevel 1 I have no clue what this means and where to restart. Regards, Sam |
September 25, 2009 Re: What if gc.disable at all | ||||
---|---|---|---|---|
| ||||
Posted in reply to Sam Hu | Sam Hu wrote: > Ah yes,I once translated most of Tango's tango.util.container.* into D2 excluding one or two modules which heavily depends on Tango other modules.It get compiled.However,the test program crashed with below error message: > Error 42:Symbol Undefined _D5tango4core6Memory2GC6addrOfFpvZPv > ---errorlevel 1 > > I have no clue what this means and where to restart. > > Regards, > Sam How about by reading the error message? Error 42:Symbol Undefined _D5tango4core6Memory2GC6addrOfFpvZPv --> Error 42:Symbol Undefined void* tango.core.Memory.GC.addrOf(void*) Ergo, you didn't link in tango.core.Memory, which it wants. |
September 26, 2009 Re: What if gc.disable at all | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Keep | Daniel Keep Wrote:
> How about by reading the error message?
>
> Error 42:Symbol Undefined _D5tango4core6Memory2GC6addrOfFpvZPv
>
> -->
>
> Error 42:Symbol Undefined void* tango.core.Memory.GC.addrOf(void*)
>
> Ergo, you didn't link in tango.core.Memory, which it wants.
Thanks a lot.But may I ask...so I have to use Tango's runtime in D2 other than D2's runtime,or,to use both?
Regards,
Sam
|
Copyright © 1999-2021 by the D Language Foundation