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
|