[squeak-dev] how/where is memory returned to the OS?
Igor Stasenko
siguctua at gmail.com
Fri Oct 19 21:53:09 UTC 2012
To be more precise:
the function which responsible for that is sqShrinkMemoryBy()
on windows it is disabled
(see
#define DO_NOT_SHRINK
)
in unix sources (sqUnixMemory.c), it saying merely the same:
* The code allows memory to be overallocated; i.e., the initial
* block is reserved via mmap() and then the unused portion
* munmap()ped from the top end. This is INHERENTLY DANGEROUS since
* malloc() may randomly map new memory in the block we "reserved"
* and subsequently unmap()ped. Enabling this causes crashes in
* Croquet, which makes heavy use of the FFI and thus calls malloc()
* all over the place.
*
* For this reason, overallocateMemory is DISABLED by default.
*
* The upshot of all this is that Squeak will claim (and hold on to)
* ALL of the available virtual memory (or at least 75% of it) when
* it starts up. If you can't live with that, use the -memory
* option to allocate a fixed size heap.
so, it never munmap()'s the mapped memory.
that's why it showing 512M in use, while in fact your image might need
much less than that :)
--
Best regards,
Igor Stasenko.
More information about the Squeak-dev
mailing list
|