Mercurial > hg > graal-jvmci-8
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 |