Review Request (7u): JDK-8048271: Minor GC times doubled from JDK 6u35 to JDK 7u51

Poonam Bajaj poonam.bajaj at oracle.com
Mon Jul 14 09:56:21 UTC 2014


Hi Krik,

I am not sure about how much data the class statics and the Intern 
strings in the PermGen hold on to and prevent it from getting collected 
during minor collections. I ran a simple testcase with and without 
JavaObjectsInPerm option and here are the results:

With JavaObjectsinPerm disabled (class statics and the Intern strings 
allocated in the Java Heap):
[GC [PSYoungGen: 3582048K->288K(3582976K)] 3582376K->616K(3591168K), 
0.0085903 secs] [Times: user=0.04 sys=0.00, real=0.01 secs]
[GC [PSYoungGen: 3582240K->160K(3582976K)] 3582568K->488K(3591168K), 
0.0092994 secs] [Times: user=0.03 sys=0.01, real=0.01 secs]
[GC [PSYoungGen: 3582112K->320K(3582976K)] 3582440K->648K(3591168K), 
0.0081279 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]
[GC [PSYoungGen: 3582272K->160K(3582976K)] 3582600K->488K(3591168K), 
0.0098965 secs] [Times: user=0.04 sys=0.00, real=0.01 secs]
[GC [PSYoungGen: 3582112K->320K(3582976K)] 3582440K->648K(3591168K), 
0.0088431 secs] [Times: user=0.04 sys=0.00, real=0.01 secs]
[GC [PSYoungGen: 3582272K->128K(3582976K)] 3582600K->456K(3591168K), 
0.0400462 secs] [Times: user=0.43 sys=0.01, real=0.04 secs]
[GC [PSYoungGen: 3582080K->288K(3582976K)] 3582408K->616K(3591168K), 
0.0101112 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]

With +JavaObjectsInPerm
[GC [PSYoungGen: 3583136K->416K(3583488K)] 3583368K->648K(3591680K), 
0.0039106 secs] [Times: user=0.02 sys=0.00, real=0.00 secs]
[GC [PSYoungGen: 3583392K->384K(3582464K)] 3583624K->616K(3590656K), 
0.0031309 secs] [Times: user=0.02 sys=0.01, real=0.00 secs]
[GC [PSYoungGen: 3582336K->288K(3582976K)] 3582568K->520K(3591168K), 
0.0035557 secs] [Times: user=0.03 sys=0.00, real=0.00 secs]
[GC [PSYoungGen: 3582240K->352K(3583488K)] 3582472K->584K(3591680K), 
0.0044523 secs] [Times: user=0.02 sys=0.00, real=0.00 secs]
[GC [PSYoungGen: 3583328K->416K(3583488K)] 3583560K->648K(3591680K), 
0.0040220 secs] [Times: user=0.02 sys=0.01, real=0.00 secs]
[GC [PSYoungGen: 3583392K->352K(3583488K)] 3583624K->584K(3591680K), 
0.0043633 secs] [Times: user=0.03 sys=0.00, real=0.00 secs]
[GC [PSYoungGen: 3583328K->384K(3583488K)] 3583560K->616K(3591680K), 
0.0032324 secs] [Times: user=0.02 sys=0.00, real=0.00 secs]
[GC [PSYoungGen: 3583360K->384K(3583488K)] 3583592K->616K(3591680K), 
0.0035591 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]

The collection times improve with JavaObjectsInPerm and we can see 
little increase in the size of data surviving after the collections.

Thanks,
Poonam

On 7/14/2014 12:20 PM, Kirk Pepperdine wrote:
> Hi Poonam,
>
> Do you know if roots formally in perm were preventing a lot of data 
> from being reclaimed by the minor collections?
>
> Regards,
> Kirk
>
> On Jul 14, 2014, at 2:47 AM, Poonam Bajaj <poonam.bajaj at oracle.com 
> <mailto:poonam.bajaj at oracle.com>> wrote:
>
>> Bug: JDK-8048271 <https://bugs.openjdk.java.net/browse/JDK-8048271>: 
>> Minor GC times doubled from JDK 6u35 to JDK 7u51
>> Webrev: http://cr.openjdk.java.net/~poonam/8048271/webrev.00/
>>
>> With JDK7, the minor GC collection times have increased as compared 
>> to the collection times with JDK6uxx. These pauses have increased due 
>> to the fact that the Intern strings and the class statics were moved 
>> from PermGen to the Java Heap in JDK7 and, are collected as part of 
>> the minor GC collections thus contributing to the increase in GC times.
>>
>> These changes make the debug flag 'JavaObjectsInPerm' a diagnostic 
>> flag so that it can be used to revert the PermGen changes in jdk7 and 
>> get the earlier minor GC pause times.
>>
>> Testing:
>> Manual testing comparing the PSYoungGen times with and without 
>> JavaObjectsInPerm option
>> JPRT
>>
>>
>> Thanks,
>> Poonam
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20140714/1a51fd24/attachment.html>


More information about the hotspot-gc-dev mailing list