On Tuesday, 27 January 2015 at 22:39:31 UTC, Gan wrote:
Would you know why this is using hundreds of mb of rams?

Hi,

What type is CircleShape?

If it is a class, or otherwise contains pointers, then this is probably the source of your problem.

You are storing high-entropy data (floating-point / random numbers) within the same type as one containing pointers. This is problematic with a non-precise GC, because the GC will consider the random numbers as possibly pointers, thus pinning random objects within the memory address space.

You should be able to work around this problem by:

- Making CircleShape a static struct without any pointers
- If you need to have pointers associated with CircleShape: splitting pointers and non-pointers into separate arrays of structs - Manually managing memory allocations, and storing the CircleShape instances outside the managed D heap - Building your program for x86_64 - 64 bits of address space will make fake pointer pinning very unlikely - Using a precise GC - none are currently available for D, but one is under development: https://github.com/D-Programming-Language/druntime/pull/1057

Reply via email to