[Vm-dev] Explanation of GC behaviour

Norbert Hartl norbert at hartl.name
Fri Jul 5 07:16:33 UTC 2019

I’m trying to understand better how the GC works because I cannot derive that from the parameters in the VirtualMachine object in the pharo image. 

Can someone sketch the position lifecycle of an object or point me to a document where this is described? Maybe the following questions help in helping.

- object allocation happens in eden space?
- after a few cycles eden space objects are considered survivor. Which is the process for a cycle? incremental GC run?
- survivors are moved to youngSpace? After how many cycles?
- after a few more cycles an object is moved to old space?
- the term tenuring describes the process of moving object from young space to old space or also from eden to young space?
- when is a full GC triggered?
- a full GC is the only process that removes objects from old space?
- the size of eden space and young space are fixed or relative to heap size?
- how big is the initial size of old space when the vm is started?
- if the heap size is not restricted is it likely a full GC happens or does the heap grow indefinite?
- what does the VirtualMachine>>#tenureCount mean? Is the tenuring runs or tenured objects?

Before the list gets to long I stop here. Your answers might remove many of them already.

thanks in advance,


More information about the Vm-dev mailing list