M wrote:
> I have a Java service that appears to ignore the
> XX:CMSInitiatingOccupancyFraction flag completely. Here're the GC
> related settings:
>
> -XX:+PrintGCDetails
> -XX:+PrintGCTimeStamps
> -XX:+PrintTenuringDistribution
> -XX:+UseConcMarkSweepGC
> -XX:+CMSIncrementalMode
> -XX:CMSInitiatingOccupancyFraction=50
> -XX:+UseCMSInitiatingOccupancyOnly
> -Xmx2048m -Xms2048m
> -XX:NewSize=100m
> -XX:MaxNewSize=100m
>
> Despite setting CMSInitiatingOccupancyFraction to 50% and setting
> UseCMSInitiatingOccupancyOnly to true, the CMS collector continues to
> wait until the tenured generation grows *way* above 50% before it
> kicks in.
>
> The reason for 50% threshold is this app being very sensitive to
> pauses and I want to avoid pause if at all possible, at the expense of
> memory and CPU. However because CMS doesn't start early as it should
> (should start at 50% tenured occupancy), I occasionally get YJ
> promotions failures and results a STW collection pause, probably due
> to fragmentation.
>
> This is JRE1.6.0 on Linux. What's going on??
>
This is a virtual machine question, and so belongs on c.l.j.machine.