hotspot/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.hpp
changeset 11174 fccee5238e70
parent 7397 5b173b4ca846
child 13195 be27e1b6a4b9
equal deleted inserted replaced
11173:af2bc14f35f8 11174:fccee5238e70
   185   // gathered.  The policy may use these counters as a threshhold
   185   // gathered.  The policy may use these counters as a threshhold
   186   // for reliable data.
   186   // for reliable data.
   187   julong _young_gen_change_for_minor_throughput;
   187   julong _young_gen_change_for_minor_throughput;
   188   julong _old_gen_change_for_major_throughput;
   188   julong _old_gen_change_for_major_throughput;
   189 
   189 
       
   190   static const uint GCWorkersPerJavaThread  = 2;
       
   191 
   190   // Accessors
   192   // Accessors
   191 
   193 
   192   double gc_pause_goal_sec() const { return _gc_pause_goal_sec; }
   194   double gc_pause_goal_sec() const { return _gc_pause_goal_sec; }
   193   // The value returned is unitless:  it's the proportion of time
   195   // The value returned is unitless:  it's the proportion of time
   194   // spent in a particular collection type.
   196   // spent in a particular collection type.
   329     _decrement_tenuring_threshold_for_survivor_limit = v;
   331     _decrement_tenuring_threshold_for_survivor_limit = v;
   330   }
   332   }
   331   // Return true if the policy suggested a change.
   333   // Return true if the policy suggested a change.
   332   bool tenuring_threshold_change() const;
   334   bool tenuring_threshold_change() const;
   333 
   335 
       
   336   static bool _debug_perturbation;
       
   337 
   334  public:
   338  public:
   335   AdaptiveSizePolicy(size_t init_eden_size,
   339   AdaptiveSizePolicy(size_t init_eden_size,
   336                      size_t init_promo_size,
   340                      size_t init_promo_size,
   337                      size_t init_survivor_size,
   341                      size_t init_survivor_size,
   338                      double gc_pause_goal_sec,
   342                      double gc_pause_goal_sec,
   339                      uint gc_cost_ratio);
   343                      uint gc_cost_ratio);
       
   344 
       
   345   // Return number default  GC threads to use in the next GC.
       
   346   static int calc_default_active_workers(uintx total_workers,
       
   347                                          const uintx min_workers,
       
   348                                          uintx active_workers,
       
   349                                          uintx application_workers);
       
   350 
       
   351   // Return number of GC threads to use in the next GC.
       
   352   // This is called sparingly so as not to change the
       
   353   // number of GC workers gratuitously.
       
   354   //   For ParNew collections
       
   355   //   For PS scavenge and ParOld collections
       
   356   //   For G1 evacuation pauses (subject to update)
       
   357   // Other collection phases inherit the number of
       
   358   // GC workers from the calls above.  For example,
       
   359   // a CMS parallel remark uses the same number of GC
       
   360   // workers as the most recent ParNew collection.
       
   361   static int calc_active_workers(uintx total_workers,
       
   362                                  uintx active_workers,
       
   363                                  uintx application_workers);
       
   364 
       
   365   // Return number of GC threads to use in the next concurrent GC phase.
       
   366   static int calc_active_conc_workers(uintx total_workers,
       
   367                                       uintx active_workers,
       
   368                                       uintx application_workers);
   340 
   369 
   341   bool is_gc_cms_adaptive_size_policy() {
   370   bool is_gc_cms_adaptive_size_policy() {
   342     return kind() == _gc_cms_adaptive_size_policy;
   371     return kind() == _gc_cms_adaptive_size_policy;
   343   }
   372   }
   344   bool is_gc_ps_adaptive_size_policy() {
   373   bool is_gc_ps_adaptive_size_policy() {