This was taken after I paused (see buttons at the bottom left corner) the execution. Shows the state of the heap at the very start of a young GC. Notice that the right semi-space of the young generation is full (all red) and the left semi-space is unused (gray).
This is the state of the heap after the young GC. I got to it while paused by pressing the Step One button (this is the one on the right out of the three buttons at the bottom-left corner of the window). Essentially, it moves the VM up to the next visualisation point. Notice that all live objects from the young generation have been evacuated to the old space and now the left semi-space empty (black), while the right one is unused (gray).
It's also worth noting that, when moving forward to the next "step",
both spaces (young + old generations) are updated and show a
consistent state. This might sound straightforward but I had to add a
mechanism to ensure it (this mechanism is also when disconnecting the
visualiser from the VM to also ensure the last visualisation
transmitted is also consistent).
Shot 3: Paused / End Young GC (Promotion View)
This is exactly the same point as above, but it shows the Promotion view which indicates in which parts of the old generation there was allocation during the last young GC. This is probably not very interesting for the M&C, but it will be very intersting for the M&S / CM&S (when I get round to implementing it for them!).
This is the start of the following young GC. Notice that now left semi-space is now full.
This is the end of the young GC. Notice that, in this case, some
objects have been retained in the young generation (right semi-space
is half-full).
Shot 6: Paused / End Young GC (Promotion View)
Exactly the same point as above, but it shows the Promotion view. Notice that there was considerably less promotion than the previous young GC, due to the larger number of objects retained in the young generation.