< prev index next >

src/share/vm/gc/g1/concurrentG1Refine.cpp

Print this page




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "gc/g1/concurrentG1Refine.hpp"
  27 #include "gc/g1/concurrentG1RefineThread.hpp"
  28 #include "gc/g1/g1CollectedHeap.inline.hpp"
  29 #include "gc/g1/g1HotCardCache.hpp"
  30 #include "runtime/java.hpp"
  31 
  32 ConcurrentG1Refine::ConcurrentG1Refine(G1CollectedHeap* g1h, CardTableEntryClosure* refine_closure) :
  33   _threads(NULL), _n_threads(0),
  34   _hot_card_cache(g1h)
  35 {
  36   // Ergonomically select initial concurrent refinement parameters
  37   if (FLAG_IS_DEFAULT(G1ConcRefinementGreenZone)) {
  38     FLAG_SET_DEFAULT(G1ConcRefinementGreenZone, MAX2<int>(ParallelGCThreads, 1));
  39   }
  40   set_green_zone(G1ConcRefinementGreenZone);
  41 
  42   if (FLAG_IS_DEFAULT(G1ConcRefinementYellowZone)) {
  43     FLAG_SET_DEFAULT(G1ConcRefinementYellowZone, green_zone() * 3);
  44   }
  45   set_yellow_zone(MAX2<int>(G1ConcRefinementYellowZone, green_zone()));
  46 
  47   if (FLAG_IS_DEFAULT(G1ConcRefinementRedZone)) {
  48     FLAG_SET_DEFAULT(G1ConcRefinementRedZone, yellow_zone() * 2);
  49   }
  50   set_red_zone(MAX2<int>(G1ConcRefinementRedZone, yellow_zone()));
  51 
  52   _n_worker_threads = thread_num();
  53   // We need one extra thread to do the young gen rset size sampling.
  54   _n_threads = _n_worker_threads + 1;
  55 
  56   reset_threshold_step();
  57 
  58   _threads = NEW_C_HEAP_ARRAY(ConcurrentG1RefineThread*, _n_threads, mtGC);




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "gc/g1/concurrentG1Refine.hpp"
  27 #include "gc/g1/concurrentG1RefineThread.hpp"
  28 #include "gc/g1/g1CollectedHeap.inline.hpp"
  29 #include "gc/g1/g1HotCardCache.hpp"
  30 #include "runtime/java.hpp"
  31 
  32 ConcurrentG1Refine::ConcurrentG1Refine(G1CollectedHeap* g1h, CardTableEntryClosure* refine_closure) :
  33   _threads(NULL), _n_threads(0),
  34   _hot_card_cache(g1h)
  35 {
  36   // Ergonomically select initial concurrent refinement parameters
  37   if (FLAG_IS_DEFAULT(G1ConcRefinementGreenZone)) {
  38     FLAG_SET_DEFAULT(G1ConcRefinementGreenZone, (intx)ParallelGCThreads);
  39   }
  40   set_green_zone(G1ConcRefinementGreenZone);
  41 
  42   if (FLAG_IS_DEFAULT(G1ConcRefinementYellowZone)) {
  43     FLAG_SET_DEFAULT(G1ConcRefinementYellowZone, green_zone() * 3);
  44   }
  45   set_yellow_zone(MAX2<int>(G1ConcRefinementYellowZone, green_zone()));
  46 
  47   if (FLAG_IS_DEFAULT(G1ConcRefinementRedZone)) {
  48     FLAG_SET_DEFAULT(G1ConcRefinementRedZone, yellow_zone() * 2);
  49   }
  50   set_red_zone(MAX2<int>(G1ConcRefinementRedZone, yellow_zone()));
  51 
  52   _n_worker_threads = thread_num();
  53   // We need one extra thread to do the young gen rset size sampling.
  54   _n_threads = _n_worker_threads + 1;
  55 
  56   reset_threshold_step();
  57 
  58   _threads = NEW_C_HEAP_ARRAY(ConcurrentG1RefineThread*, _n_threads, mtGC);


< prev index next >