Pls review 6887571

David Holmes - Sun Microsystems David.Holmes at Sun.COM
Mon Oct 5 17:40:59 PDT 2009


Any reason -Xmx has to be hardcoded rather than calculated based on the 
installed/available memory ? Then OldSize and newSize can/should be 
fractions on mx value.

Just a thought ...

David

Paul Hohensee said the following on 10/03/09 03:05:
> You're right, they should migrate back.  If there's a need for them to 
> diverge
> in the future, we can split them back out then.
> 
> Thanks,
> 
> Paul
> 
> Y.S.Ramakrishna at Sun.COM wrote:
>> Hi Paul --
>>
>> Looks good (and about time too!).
>> Should the parameters whose defaults are now
>> uniform across platforms migrate back to globals.hpp
>> from their current lobals_*.hpp locations? Or do you
>> see the need for continuing to keep them in platform-specific
>> globals_*.hpp?
>>
>> -- ramki
>>
>> On 10/02/09 07:32, Paul Hohensee wrote:
>>> 6887571: Increase default heap config sizes
>>>
>>> Webrev at
>>>
>>> http://cr.openjdk.java.net/~phh/6887571/webrev.00/
>>>
>>>  From the CR description:
>>>
>>> The default client vm heap config since ~2000 has been the equivalent of
>>>
>>> -Xmx64m -XX:OldSize=4m -XX:NewSize=2m -XX:NewRatio=8
>>> -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15
>>>
>>> for sparc32, and
>>>
>>> -Xmx64m -XX:OldSize=4m -XX:NewSize=1m -XX:NewRatio=12
>>> -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15
>>>
>>> for x86.  OldSize and NewSize are the initial committed sizes of the old
>>> and young gens respectively.  A full gc is required to increase the 
>>> committed
>>> size of the old gen.
>>>
>>> At the time, 64m was half of the 128m of memory typically available 
>>> on high-end
>>> desktops, many client applications were satisfied with small heaps 
>>> (hence the
>>> low -Xms value), and gc times were such that the young gen had to be 
>>> fairly small
>>> in order to minimize pause times.
>>>
>>> Since that time, low end desktops and laptops, as well as netbooks 
>>> and smartbooks,
>>> typically come with 256m, client applications have become much more 
>>> "server-like",
>>> and we've realized that small young gen sizes increase the frequency 
>>> of young gcs
>>> and the amount of transient data promoted to the old gen to levels 
>>> that noticeably
>>> impact startup and steady-state performance, principally by provoking 
>>> full GCs.
>>> We also note that young gen collection times are proportional to the 
>>> total survivor
>>> size rather than young gen size and that small (in absolute terms) 
>>> survivor spaces
>>> cause promotion of transient objects, thereby eventually provoking 
>>> unnecessary
>>> full GCs.
>>>
>>> This change make the default heap config
>>>
>>> -Xmx128m -XX:OldSize=14m -XX:NewSize=4m -XX:NewRatio=2
>>> -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15
>>>
>>> I.e., it leaves SurvivorRatio and MaxTenuringThreshold alone, but 
>>> increases absolute
>>> survivor space size significantly.  We still want as many objects to 
>>> die in the young
>>> gen as possible, so MaxTenuringThreshold reamins at maximum.  
>>> NewRatio is
>>> set to the server default of 2, thereby increasing reducing the 
>>> number of young collections.
>>>
>>> JavaFX startup benchmark runs show an almost 11% improvement, while 
>>> generic
>>> client startup benchmark runs show up to 14% improvement.  Footprint 
>>> increases
>>> somewhat, ranging from 2% for noop to 37% for netbeans.
>>>
>>> Thanks,
>>>
>>> Paul
>>>
>>


More information about the hotspot-dev mailing list