July 05, 2007
Oskar Linde Wrote:

> Ald skrev:
> > Hello.
> > 
> > I have the following code:
> > 
> > char[] unitStack = new char[256];
> > unitStack.length = 0;
> > 
> > Does it make sense from viewpoint of simplifying memory management?  If I enlarge the size, the array won't be reallocated?
> 
> That is equivalent to reserving 256 chars. Enlarging the unitStack will not cause reallocation for at least the first 256 entries.
> 
> -- 
> Oskar


What sort of guarantee there is that the memory manager will not give the 127th through 255th chars to somebody else?
July 05, 2007
Ald skrev:
> Oskar Linde Wrote:
> 
>> Ald skrev:
>>> Hello.
>>>
>>> I have the following code:
>>>
>>> char[] unitStack = new char[256];
>>> unitStack.length = 0;
>>>
>>> Does it make sense from viewpoint of simplifying memory management?  If I enlarge the size, the array won't be reallocated?
>> That is equivalent to reserving 256 chars. Enlarging the unitStack will not cause reallocation for at least the first 256 entries.
>>
>> -- 
>> Oskar
> 
> 
> What sort of guarantee there is that the memory manager will not give the 127th through 255th chars to somebody else?

The 256 bytes form a continuous chunk. As long as any reference (pointer) to any element within that chunk exists, the GC will not reclaim any part. unitStack.length = 0; will not change unitStack.ptr.

-- 
Oskar