comparison src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp @ 1887:cd3ef3fd20dd

6992998: CMSWaitDuration=0 causes hangs with +ExplicitGCInvokesConcurrent Summary: Closed a timing hole during which concurrent full gc requests can be missed. The hole can increase the latency of the response to a full gc request by up to the value of CMSWaitDuration. If CMSWaitDuration=0 is, as currently, interpreted as an unbounded wait, suitable in certain tuning scenarios, the application can potentially hang. Made two obscure tunables, including CMSWaitDuration, manageable. Reviewed-by: jcoomes, tonyp
author ysr
date Thu, 21 Oct 2010 17:29:24 -0700
parents c99c53f07c14
children f95d63e2154a
comparison
equal deleted inserted replaced
1886:72a161e62cc4 1887:cd3ef3fd20dd
118 static bool cms_thread_wants_cms_token() { 118 static bool cms_thread_wants_cms_token() {
119 return CMS_flag_is_set(CMS_cms_wants_token); 119 return CMS_flag_is_set(CMS_cms_wants_token);
120 } 120 }
121 121
122 // Wait on CMS lock until the next synchronous GC 122 // Wait on CMS lock until the next synchronous GC
123 // or given timeout, whichever is earlier. 123 // or given timeout, whichever is earlier. A timeout value
124 void wait_on_cms_lock(long t); // milliseconds 124 // of 0 indicates that there is no upper bound on the wait time.
125 // A concurrent full gc request terminates the wait.
126 void wait_on_cms_lock(long t_millis);
125 127
126 // The CMS thread will yield during the work portion of its cycle 128 // The CMS thread will yield during the work portion of its cycle
127 // only when requested to. Both synchronous and asychronous requests 129 // only when requested to. Both synchronous and asychronous requests
128 // are provided: 130 // are provided:
129 // (1) A synchronous request is used for young gen collections and 131 // (1) A synchronous request is used for young gen collections and