On 3/31/22 3:44 PM, WhatMeWorry wrote:
I run the program (at the bottom) and get, as expected, the run-time out of memory error:

PS C:\D\sandbox> .\Reserve.exe
   newCapacity = [              1]
   newCapacity = [              3]
   newCapacity = [              5]
                 o    o    o
   newCapacity = [    905,207,293]
   newCapacity = [    905,207,805]
   newCapacity = [    905,208,317]

core.exception.OutOfMemoryError@src\core\lifetime.d(126): Memory allocation failed


Is there a way to programmatically determine the exact maximum memory size available to the DRuntime’s array implementation?

Note that your code example is not hitting the limit of the largest contiguous block that could be allocated, but the sum of it and *all the smaller blocks*, as those are still used by the GC.

At any of those extensions, it might reallocate a new block, and copy the data there. In that case, the original block is abandoned (and might be freed to the GC), but it's not used in any subsequent allocations, because your new allocations won't fit! So the GC's usage of memory might be much higher than you think.

What I'd do is a binary search via *new processes* to see where it breaks.

-Steve

Reply via email to