< prev index next >

src/share/vm/gc/cms/concurrentMarkSweepGeneration.hpp

Print this page




1046 
1047   // Reason generation was expanded
1048   CMSExpansionCause::Cause _expansion_cause;
1049 
1050   // In support of MinChunkSize being larger than min object size
1051   const double _dilatation_factor;
1052 
1053   // True if a compacting collection was done.
1054   bool _did_compact;
1055   bool did_compact() { return _did_compact; }
1056 
1057   // Fraction of current occupancy at which to start a CMS collection which
1058   // will collect this generation (at least).
1059   double _initiating_occupancy;
1060 
1061  protected:
1062   // Shrink generation by specified size (returns false if unable to shrink)
1063   void shrink_free_list_by(size_t bytes);
1064 
1065   // Update statistics for GC
1066   virtual void update_gc_stats(int level, bool full);
1067 
1068   // Maximum available space in the generation (including uncommitted)
1069   // space.
1070   size_t max_available() const;
1071 
1072   // getter and initializer for _initiating_occupancy field.
1073   double initiating_occupancy() const { return _initiating_occupancy; }
1074   void   init_initiating_occupancy(intx io, uintx tr);
1075 
1076   void expand_for_gc_cause(size_t bytes, size_t expand_bytes, CMSExpansionCause::Cause cause);
1077 
1078   void assert_correct_size_change_locking();
1079 
1080  public:
1081   ConcurrentMarkSweepGeneration(ReservedSpace rs, size_t initial_byte_size,
1082                                 int level, CardTableRS* ct,
1083                                 bool use_adaptive_freelists,
1084                                 FreeBlockDictionary<FreeChunk>::DictionaryChoice);
1085 
1086   // Accessors
1087   CMSCollector* collector() const { return _collector; }
1088   static void set_collector(CMSCollector* collector) {
1089     assert(_collector == NULL, "already set");
1090     _collector = collector;
1091   }
1092   CompactibleFreeListSpace*  cmsSpace() const { return _cmsSpace;  }
1093 
1094   Mutex* freelistLock() const;
1095 
1096   virtual Generation::Name kind() { return Generation::ConcurrentMarkSweep; }
1097 
1098   void set_did_compact(bool v) { _did_compact = v; }
1099 
1100   bool refs_discovery_is_atomic() const { return false; }
1101   bool refs_discovery_is_mt()     const {
1102     // Note: CMS does MT-discovery during the parallel-remark




1046 
1047   // Reason generation was expanded
1048   CMSExpansionCause::Cause _expansion_cause;
1049 
1050   // In support of MinChunkSize being larger than min object size
1051   const double _dilatation_factor;
1052 
1053   // True if a compacting collection was done.
1054   bool _did_compact;
1055   bool did_compact() { return _did_compact; }
1056 
1057   // Fraction of current occupancy at which to start a CMS collection which
1058   // will collect this generation (at least).
1059   double _initiating_occupancy;
1060 
1061  protected:
1062   // Shrink generation by specified size (returns false if unable to shrink)
1063   void shrink_free_list_by(size_t bytes);
1064 
1065   // Update statistics for GC
1066   virtual void update_gc_stats(Generation* current_generation, bool full);
1067 
1068   // Maximum available space in the generation (including uncommitted)
1069   // space.
1070   size_t max_available() const;
1071 
1072   // getter and initializer for _initiating_occupancy field.
1073   double initiating_occupancy() const { return _initiating_occupancy; }
1074   void   init_initiating_occupancy(intx io, uintx tr);
1075 
1076   void expand_for_gc_cause(size_t bytes, size_t expand_bytes, CMSExpansionCause::Cause cause);
1077 
1078   void assert_correct_size_change_locking();
1079 
1080  public:
1081   ConcurrentMarkSweepGeneration(ReservedSpace rs, size_t initial_byte_size,
1082                                 CardTableRS* ct,
1083                                 bool use_adaptive_freelists,
1084                                 FreeBlockDictionary<FreeChunk>::DictionaryChoice);
1085 
1086   // Accessors
1087   CMSCollector* collector() const { return _collector; }
1088   static void set_collector(CMSCollector* collector) {
1089     assert(_collector == NULL, "already set");
1090     _collector = collector;
1091   }
1092   CompactibleFreeListSpace*  cmsSpace() const { return _cmsSpace;  }
1093 
1094   Mutex* freelistLock() const;
1095 
1096   virtual Generation::Name kind() { return Generation::ConcurrentMarkSweep; }
1097 
1098   void set_did_compact(bool v) { _did_compact = v; }
1099 
1100   bool refs_discovery_is_atomic() const { return false; }
1101   bool refs_discovery_is_mt()     const {
1102     // Note: CMS does MT-discovery during the parallel-remark


< prev index next >