RFR(XXXS): 7092245: G1: Wrong format specifier in G1PrintRegionLivenessInfo header output
Tony Printezis
tony.printezis at oracle.com
Wed Sep 21 16:51:15 UTC 2011
John,
Looks good.
Ramki and Bengt,
The format of this output looks a bit like this:
### PHASE Post-Sorting @ 5.303
### HEAP committed: 0xf2400000-0xf6400000 reserved:
0xf2400000-0xf6400000 region-size: 1048576
###
### type address-range used prev-live
next-live gc-eff
### OLD 0xf4d00000-0xf4e00000 1048576 680 0
1036338.1
### OLD 0xf4800000-0xf4900000 1048576 824 0
1033205.5
...
### OLD 0xf5e00000-0xf5f00000 1048576 1043552
0 747.1
###
### SUMMARY capacity: 35.00 MB used: 34.51 MB / 98.60 % prev-live:
12.81 MB / 36.59 % next-live: 0.00 MB / 0.00 %
So, the per-region information is in bytes, the summary is in MBs. It's
nice to have the accuracy in the per-region info (e.g., in the above
example, 680 bytes will probably be lost in the rounding). I vote to
leave it as is. Also, note that region size is bounded (to 16MB), so the
byte sizes are also bounded.
Tony
Bengt Rutisson wrote:
>
> John,
>
> Looks good.
>
> I agree with Ramki that it would have been nice to have the size value
> in an appropriate unit (especially considering that the minimum size i
> 1 MB and the size will always be a multiple of 1 MB). If you feel that
> such a change is outside the scope of this CR I am fine with your
> change as it is.
>
> Bengt
>
> On 2011-09-21 00:31, Y. S. Ramakrishna wrote:
>> Would it be a good idea to provide size in KB or MB, to make
>> the output more concise and easier for human consumption?
>>
>> Your change looks fine though.
>> -- ramki
>>
>> On 09/20/11 15:22, John Cuthbertson wrote:
>>> Hi Everyone,
>>>
>>> Can I have a review of the tiny fix for this CR? The webrev can be
>>> found at: http://cr.openjdk.java.net/~johnc/7092245/webrev.0/
>>>
>>> Summary: In the G1PrintRegionLivenessInfo output, the region size in
>>> the header is printed using a SIZE_FORMAT but is typed as an int.
>>> That can cause some incorrect output by the 64-bit VM on some
>>> systems. The solution is to cast the value of HeapRegion::GrainBytes
>>> to a size_t in the print statement.
>>>
>>> Tested using gcbasher:
>>>
>>> Old output:
>>> ### PHASE Post-Marking @ 1.481
>>> ### HEAP committed: 0x00000000eae00000-0x00000000f4d00000
>>> reserved: 0x00000000eae00000-0x00000000fae00000 region-size:
>>> 139672337514496
>>> ###
>>>
>>> New output:
>>> ### PHASE Post-Marking @ 1.480
>>> ### HEAP committed: 0x00000000eae00000-0x00000000f4d00000
>>> reserved: 0x00000000eae00000-0x00000000fae00000 region-size: 1048576
>>> ###
>>>
>>> Thanks,
>>>
>>> JohnC
>
More information about the hotspot-gc-dev
mailing list