316 _cms_timer.stop();
317
318 // This is just an approximate value, but is good enough.
319 _cms_used_at_cms_begin = _cms_used_at_gc0_end;
320
321 _cms_period = AdaptiveWeightedAverage::exp_avg((float)_cms_period,
322 (float) _cms_timer.seconds(), _cms_alpha);
323 _cms_begin_time.update();
324
325 _cms_timer.reset();
326 _cms_timer.start();
327 }
328
329 inline void CMSStats::record_cms_end() {
330 _cms_timer.stop();
331
332 float cur_duration = _cms_timer.seconds();
333 _cms_duration = AdaptiveWeightedAverage::exp_avg(_cms_duration,
334 cur_duration, _cms_alpha);
335
336 // Avoid division by 0.
337 const size_t cms_used_mb = MAX2(_cms_used_at_cms_begin / M, (size_t)1);
338 _cms_duration_per_mb = AdaptiveWeightedAverage::exp_avg(_cms_duration_per_mb,
339 cur_duration / cms_used_mb,
340 _cms_alpha);
341
342 _cms_end_time.update();
343 _cms_alpha = _saved_alpha;
344 _allow_duty_cycle_reduction = true;
345 _valid_bits |= _CMS_VALID;
346
347 _cms_timer.start();
348 }
349
350 inline double CMSStats::cms_time_since_begin() const {
351 return _cms_begin_time.seconds();
352 }
353
354 inline double CMSStats::cms_time_since_end() const {
355 return _cms_end_time.seconds();
356 }
357
358 inline double CMSStats::promotion_rate() const {
359 assert(valid(), "statistics not valid yet");
360 return gc0_promoted() / gc0_period();
361 }
|
316 _cms_timer.stop();
317
318 // This is just an approximate value, but is good enough.
319 _cms_used_at_cms_begin = _cms_used_at_gc0_end;
320
321 _cms_period = AdaptiveWeightedAverage::exp_avg((float)_cms_period,
322 (float) _cms_timer.seconds(), _cms_alpha);
323 _cms_begin_time.update();
324
325 _cms_timer.reset();
326 _cms_timer.start();
327 }
328
329 inline void CMSStats::record_cms_end() {
330 _cms_timer.stop();
331
332 float cur_duration = _cms_timer.seconds();
333 _cms_duration = AdaptiveWeightedAverage::exp_avg(_cms_duration,
334 cur_duration, _cms_alpha);
335
336 _cms_end_time.update();
337 _cms_alpha = _saved_alpha;
338 _allow_duty_cycle_reduction = true;
339 _valid_bits |= _CMS_VALID;
340
341 _cms_timer.start();
342 }
343
344 inline double CMSStats::cms_time_since_begin() const {
345 return _cms_begin_time.seconds();
346 }
347
348 inline double CMSStats::cms_time_since_end() const {
349 return _cms_end_time.seconds();
350 }
351
352 inline double CMSStats::promotion_rate() const {
353 assert(valid(), "statistics not valid yet");
354 return gc0_promoted() / gc0_period();
355 }
|