Memory leaks

develop32 develop32 at gmail.com
Sun Oct 13 06:46:12 PDT 2013


On Sunday, 13 October 2013 at 13:18:47 UTC, Benjamin Thaut wrote:
> Am 13.10.2013 14:08, schrieb develop32:
>> Windows task manager shows constantly increasing memory usage 
>> of my D
>> application, yet there is ZERO allocation done by it at the 
>> time. I have
>> made a hook inside the rt/lifetime.d for _d_allocmemory, and I 
>> do get
>> notified when an array or a class object in constructed.
>> What could be the source of rapidly climbing (hundred 
>> kilobytes per
>> second) memory usage?
>
> If your programm is a 32-bit application the GC most likely 
> leaks memory because it thinks its still referenced. Try 
> compilling your application for 64-bit. If the problem goes 
> away it's not your fault.
> A possible workaround for this situation is to allocate large 
> blocks of memory which you know will not contain any pointers 
> with GC.malloc manually and specifying the "don't scan" flag.
>
> If the problem still exists in a 64-bit application you most 
> likely continue to allocate memory that remains referenced. 
> Make sure you don't have any infinitly growing arrays or other 
> containers that still reference the memory you allocated.

Thanks, will try 64-bit when possible.
No, there are no allocations in my code, I have set breakpoints 
wherever I can throughout it and there are no allocations being 
made every frame (its a video game). I don't use built-in dynamic 
array directly, have my own wrapper for it.
My question is, are there any more places in druntime that I can 
change so that I will get a notification when allocation occurs, 
besides _d_allocmemory?


More information about the Digitalmars-d-learn mailing list