VM and memory on win32

tim Rowledge tim at rowledge.org
Thu Sep 14 22:20:41 UTC 2006


On 14-Sep-06, at 3:09 PM, Mathieu wrote:

>
> This may be cause beceause all avaliable pointer are use.
>> From what I know each object are represente by a pointer instance  
>> of SmallInteger (except
> SmallInteger instance who have no pointer, it is himself) (see the  
> The missing chapters of the blue
> Book ch. 26)
> So the maximum memorie size is:
>
> (SmallInteger maxVal) / (1024 * 1024)
>
> Wich give you about 1000MB of memorie
No, that's not it at all :-)

In the 'normal' 32bit machine VM object pointers are 32 bit values  
and can point to the full 4gb address range. Unfortunately older vms  
used signed numbers for address pointers and so any time object  
memory crossed the 2gb line there were cases where we would compare  
signed values with the top bit set and branch to Poughkeepise.

The newest VM code avoids this - at least I'm fairly sure it does.  
The very newest VM code can be compiled for 64bit capable machines  
and give you implausibly large potential memory spaces. More than  
most of us can actually fit into our machines, anyway.


tim
--
tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
Useful random insult:- Forgot to pay his brain bill.





More information about the Squeak-dev mailing list