RFR(S): 8010738: G1: Output for full GCs with +PrintGCDetails should contain perm gen size/meta data change info
bengt.rutisson at oracle.com
Wed May 8 16:18:50 UTC 2013
On 5/8/13 1:44 PM, Coleen Phillimore wrote:
> On 5/7/2013 11:40 PM, Bengt Rutisson wrote:
>> Hi John,
>> This looks good!
>> One question. Why do we only print the metaspace information for full
>> GCs? I see that this is consistent with the other GCs, but the
>> metaspace information changes over time, so wouldn't it be
>> interesting to print it for every GC?
> The metaspace will only grow between young collections as new classes
> are loaded. It will only shrink during full GC's or any GC that does
> class unloading.
Right, but I thought it would actually be interesting to see how the
> It seems expensive to print it out for all GC's.
Is it really that expensive?
Anyway, I'm fine with the way John did it now. It is consistent with the
John, I just noticed one thing that I find a bit odd. The
G1CollectorPolicy::print_detailed_heap_transition() method is only
called from G1CollectedHeap::do_collection(), so it really doesn't have
to take the full parameter. It could always print the metaspace
>> Also a heads up, as you may know there are a couple of suggested
>> changes to how the capacity and used methods for metaspace should
>> work. This is probably fine with regards to your change since it is
>> similar to the other GCs, but it may mean that the actual output will
>> A couple of minor comments:
>> The JTreg test does not have an @run tag. What does that mean? How is
>> it executed?
>> What do you think about renaming _heap_bytes_before_gc to
>> _heap_used_before_gc? Seems more consistent with the other variable
>> names such as _heap_capacity_before_gc.
>> Similarly, what do you think about renaming the local varialbles
>> *_byte_* to *_used_* in
>> On 5/7/13 12:23 AM, John Cuthbertson wrote:
>>> Hi Everyone,
>>> Can I get a couple of volunteers review these fairly straight
>>> forward changes? The webrev can be found at:
>>> At sustaining engineering's request I've added the change
>>> information about the metadata space to the detailed heap output for
>>> full GCs:
>>>> 4.896: [Full GC (Allocation Failure) 512M->343M(512M), 4.3640117 secs]
>>>> [Eden: 0.0B(25.0M)->0.0B(97.0M) Survivors: 0.0B->0.0B Heap:
>>>> 512.0M(512.0M)->343.3M(512.0M)], [Metaspace: 1611K->2433K(6448K)]
>>>> [Times: user=5.13 sys=0.15, real=4.36 secs]
>>> The information that gets printed mirrors that of the other
>>> collectors. Here's parallel GC:
>>>> 33.245: [Full GC (Ergonomics) [PSYoungGen: 133632K->3423K(144640K)]
>>>> [ParOldGen: 348158K->348158K(348160K)] 481790K->351581K(492800K),
>>>> [Metaspace: 1612K->2433K(6448K)], 2.5788089 secs] [Times: user=9.96
>>>> sys=0.00, real=2.58 secs]
>>> The information that's printed is the amount of metaspace used
>>> before the GC, the capacity, and the amount of reserved space.
>>> The changes should be straight forward when this is backported to
>>> hs24 - namely replacing the call to
>>> MetaspaceAux::print_metaspace_change() to
>>> Most of the changes are the result of renaming some of the fields in
>>> G1CollectorPolicy and the local variables in
>>> The included regression test just spawns a child java process to run
>>> a very simple system GC test program with G1 and +PrintGCDetails.
>>> The output of the spawned process is checked for "Metaspace".
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the hotspot-gc-dev