150 if (used_before_gc >= _used_at_prologue) { 151 size_t promoted_in_bytes = used_before_gc - _used_at_prologue; 152 gc_stats()->avg_promoted()->sample(promoted_in_bytes); 153 } 154 } 155 } 156 157 void TenuredGeneration::update_counters() { 158 if (UsePerfData) { 159 _space_counters->update_all(); 160 _gen_counters->update_all(); 161 } 162 } 163 164 bool TenuredGeneration::promotion_attempt_is_safe(size_t max_promotion_in_bytes) const { 165 size_t available = max_contiguous_available(); 166 size_t av_promo = (size_t)gc_stats()->avg_promoted()->padded_average(); 167 bool res = (available >= av_promo) || (available >= max_promotion_in_bytes); 168 if (PrintGC && Verbose) { 169 gclog_or_tty->print_cr( 170 "Tenured: promo attempt is%s safe: available("SIZE_FORMAT") %s av_promo("SIZE_FORMAT")," 171 "max_promo("SIZE_FORMAT")", 172 res? "":" not", available, res? ">=":"<", 173 av_promo, max_promotion_in_bytes); 174 } 175 return res; 176 } 177 178 void TenuredGeneration::collect(bool full, 179 bool clear_all_soft_refs, 180 size_t size, 181 bool is_tlab) { 182 GenCollectedHeap* gch = GenCollectedHeap::heap(); 183 184 // Temporarily expand the span of our ref processor, so 185 // refs discovery is over the entire heap, not just this generation 186 ReferenceProcessorSpanMutator 187 x(ref_processor(), gch->reserved_region()); 188 189 STWGCTimer* gc_timer = GenMarkSweep::gc_timer(); 190 gc_timer->register_gc_start(); 191 | 150 if (used_before_gc >= _used_at_prologue) { 151 size_t promoted_in_bytes = used_before_gc - _used_at_prologue; 152 gc_stats()->avg_promoted()->sample(promoted_in_bytes); 153 } 154 } 155 } 156 157 void TenuredGeneration::update_counters() { 158 if (UsePerfData) { 159 _space_counters->update_all(); 160 _gen_counters->update_all(); 161 } 162 } 163 164 bool TenuredGeneration::promotion_attempt_is_safe(size_t max_promotion_in_bytes) const { 165 size_t available = max_contiguous_available(); 166 size_t av_promo = (size_t)gc_stats()->avg_promoted()->padded_average(); 167 bool res = (available >= av_promo) || (available >= max_promotion_in_bytes); 168 if (PrintGC && Verbose) { 169 gclog_or_tty->print_cr( 170 "Tenured: promo attempt is%s safe: available(" SIZE_FORMAT ") %s av_promo(" SIZE_FORMAT ")," 171 "max_promo(" SIZE_FORMAT ")", 172 res? "":" not", available, res? ">=":"<", 173 av_promo, max_promotion_in_bytes); 174 } 175 return res; 176 } 177 178 void TenuredGeneration::collect(bool full, 179 bool clear_all_soft_refs, 180 size_t size, 181 bool is_tlab) { 182 GenCollectedHeap* gch = GenCollectedHeap::heap(); 183 184 // Temporarily expand the span of our ref processor, so 185 // refs discovery is over the entire heap, not just this generation 186 ReferenceProcessorSpanMutator 187 x(ref_processor(), gch->reserved_region()); 188 189 STWGCTimer* gc_timer = GenMarkSweep::gc_timer(); 190 gc_timer->register_gc_start(); 191 |