Question regarding G1 option to run parallel Old generation garbage collection?
Charlie Hunt
chunt at salesforce.com
Fri Oct 19 18:56:16 UTC 2012
Don't mean to jump in front of Monica. :-/ But, she can confirm. ;-)
A quick look at the G1 source code suggests that if InitiatingHeapOccupancyPercent=0, the following will happen:
- the first minor GC will initiate a concurrent cycle implying that you'll see a young GC with an initial-mark in the GC log w/ +PrintGCDetails
- every minor GC there after, as long as there is not an active concurrent cycle, will initiate the start of a concurrent cycle
* So, in other words, concurrent cycles will run back to back. Remember that there needs to be a minor GC to initiate the concurrent cycle, i.e. the initial-mark. There is at least one caveat to that which I'll explain next. So, once a concurrent cycle complete, the next concurrent cycle will not start, until the next minor GC, or a humongous allocation occurs as described next.
- If there is a humongous object allocation, a concurrent cycle will be initiated (if InitiattingHeapOccupancyPercent=0). This is done before the humongous allocation is done.
charlie ...
On Oct 19, 2012, at 12:58 PM, Kirk Pepperdine wrote:
Hi Monica,
Can you comment on what a value of 0 means?
Regards,
Kirk
On 2012-10-19, at 2:55 PM, Monica Beckwith <monica.beckwith at oracle.com<mailto:monica.beckwith at oracle.com>> wrote:
Couple of quick observations and questions -
1. G1 is officially supported in 7u4. (There are numerous performance improvements that I recommend updating to the latest jdk7 update, if possible)
2. What do you mean by old gen collection? Are you talking about MixedGCs?
3. Instead of setting InitiatingHeapOccupancyPercent to zero, have you tried resizing your young generation?
* I see the NewRatio, but that fixes the nursery to 640, instead have you tried with a lower (than the min default) of nursery using the NewSize option?
-Monica
On 10/19/2012 12:13 AM, csewhiz wrote:
Hello All,
Sorry for posting this question in this mailing list. I am unable to find any answer for this. I am trying to tune our application for G1GC as we need very small pauses Below 500msec.
But the problem is when we are runing with G1GC (under jdk 6_u37) Old generation of garbage collection only happening when it is reaching the Max GC size I noticed on jdk 6U 37 if max heap size is 1GB then it is close to 1sec 2GB close to 2 sec pauses.
Is there any parameter to force the old gc happening regularly.
I am trying following setting,
-Xms1280M -Xmx1280M -XX:+UseG1GC -XX:MaxTenuringThreshold=15 -XX:SurvivorRatio=8 -XX:NewRatio=1 -XX:GCPauseIntervalMillis=7500 -XX:MaxGCPauseMillis=500 -XX:InitiatingHeapOccupancyPercent=0 -XX:ParallelGCThreads=7 -XX:ConcGCThreads=7
If anyone can give insight on how full GC is triggred internals will be of great help.
PS: I have tried without any option for G1 but not of much help hence .. this one trying to be agressive ? but of not much help.
Regards,
Soumit
--
<oracle_sig_logo.gif><http://www.oracle.com/>
Monica Beckwith | Java Performance Engineer
VOIP: +1 512 401 1274<tel:+1%20512%20401%201274>
Texas
<green-for-email-sig_0.gif><http://www.oracle.com/commitment> Oracle is committed to developing practices and products that help protect the environment
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20121019/d033b68a/attachment.htm>
More information about the hotspot-gc-dev
mailing list