JDK-6538910 : CMS: excessively long abortable preclean cycles
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 5.0u11,5.0u8
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2007-03-26
  • Updated: 2011-03-04
  • Resolved: 2008-04-07
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other Other JDK 6 JDK 7 Other
1.4.2_16,hs11Resolved 5.0u16 b01Fixed 6u10Fixed 7Fixed hs11Fixed
Related Reports
Relates :  
Relates :  
Description
The overt symptom is apparently long repeated cycles of very short,
low-yield abortable preclean cycles hoing on for a rather long time.
The option CMSMaxAbortablePrecleanTime defaults to a number like
1000 ms or such, so the user ends up being confused as to why
the cycles take so much longer without being cut off at the
default maximum value.

Comments
EVALUATION Fixed via 5.0u15-rev-b09
07-04-2008

WORK AROUND There are situations in which the above workaround will not be very effective. In such cases, use -XX:CMSMaxAbortablePrecleanLoops=<small number, like 10>. But see also 6572569 for possible side-effects of this in certain heap shapes/configurations.
19-07-2007

EVALUATION Upon further examination of the code in 5uXX, we realize that though the workaround may be adequate in some situations, it may not be in other situations. For such cases, we will need to fix the use of the timer; see my entry in the comments section made on 7/19/2007.
19-07-2007

SUGGESTED FIX See comments section.
03-04-2007

WORK AROUND -XX:CMSMaxAbortablePrecleanTime=1 (or 10) or other suitable value, interpreted in seconds. Note that *this is a temporary workaround*, see comments section. In particular, *when you upgrade to 5u15* where this bug was fixed, or to *6.0* or later, please make sure to *remove* this temporary workaround. In JVM's where this bug has been fixed, the argument to the CMSMaxAbortablePrecleanTime is interpreted in *milliiseconds". It's only in JVM's where the bug is not fixed that it's interpreted as *seconds* and requires the explicit workaround listed above.
26-03-2007

EVALUATION See comments section. Fix understood; workaround available (see workaround section).
26-03-2007