Here I've paused the execution before the first old GC, just after a
young GC has completed (see the Current Activity label). The
obvious change is that a new way of denoting zero values has been
adopted. Rather than using smaller black tiles (like shot 1 of a previous report), now
zero values are denoted with a "hollow" tile with a think
border. Richard Jones encouraged me to adopt this policy to avoid some
"wavy line" problems that were occuring when smaller tiles were used
(most notably in shot 6 of a
previous report). The goal is to used a representation that allows the
user's eye to be "caught" by the non-zero tiles (i.e. the filled-in
ones) and not the zero ones. I think the hollow tiles with the subtle
border achieve this better than the smaller filled-in ones. See also
shots 7 and 8 further down.
Shot 2: Events Menu (Used Space View)
This shot shows the Events menu, which allows some filtering of
events (i.e. being able to turn them one and off). Here we can see
that the Start Young GC events have been turned off, i.e. they
will not be shown by the visualiser. In fact, this mechanism notifies
the VM that some events should not be visualised. Hence, the VM does
not spend unnecessary time collecting the data needed to visualise
those events and execution speeds up.
Shot 3: Step One (Used Space View)
This shot follows from the previous one after pressing the Step
One button. Notice that the Start Young GC event was
skipped and we went straight to the following End Young GC
event (see the Current Activity label).
Shot 4: End Old GC (Used Space View)
Now, we've moved forward to the end of the first old GC. To do this I
had to manually pause the execution when it reached the appropriate
point. I'm working on extending the event filtering facilities to
also force an automatic pause after some events or delay the execution
by a given amount of time to make things a bit clearer to the observer.
Shot 5: Events Menu (Used Space View)
As shown in the picture, I've now turned off all events, apart from
the End Sweeping Phase one. So, if the user is interested only
in the outcomes of old generation GCs, they will not see anything else.
Shot 6: Step One (Used Space View)
This shot follows the previous one after pressing the Step One
button, which took us directly to the end of the next old GC. This
took only a few seconds, rather than the considerably longer time that
it would have taken if all the young-generation-related events were
switched on.
Shot 7: End Young GC (Free Chunks View)
This shot is taken a bit later on and illustrates the new way of
denoting zero values for the Free Chunks view. Compare it to
shot 4 of a previous report.
Shot 8: End Young GC (Promotion View)
Finally, this one illustrates the new way of denoting zero values for the Promotion view. Compare it to shot 5 of a previous report.