Tuesday, June 5, 2001

A sequence of screenshots that show off some new facilities of GCspy: being able to pause and to move forward one step at a time. The application visualised here is a large version of GCBench with two 2MB semi-spaces in the young generation and 32MB of old generation, running the stop-the-world M&C (I've now written a driver for it).

Shot 1: Paused / Start Young GC (Used Space View)

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).

Shot 2: Paused / End Young GC (Used Space View)

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!).

Shot 4: Paused / Start Young GC (Used Space View)

This is the start of the following young GC. Notice that now left semi-space is now full.

Shot 5: Paused / End Young GC (Used Space View)

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.


GCspy is developed and maintained by Tony Printezis.
The main GCspy page is here.
If you have any comments, feedback, suggestions, etc. please feel free to e-mail me.