Merge
This commit is contained in:
commit
9cbf6bae7c
@ -316,12 +316,8 @@ size_t G1Analytics::predict_pending_cards() const {
|
|||||||
return get_new_size_prediction(_pending_cards_seq);
|
return get_new_size_prediction(_pending_cards_seq);
|
||||||
}
|
}
|
||||||
|
|
||||||
double G1Analytics::oldest_known_gc_end_time_sec() const {
|
|
||||||
return _recent_prev_end_times_for_all_gcs_sec->oldest();
|
|
||||||
}
|
|
||||||
|
|
||||||
double G1Analytics::last_known_gc_end_time_sec() const {
|
double G1Analytics::last_known_gc_end_time_sec() const {
|
||||||
return _recent_prev_end_times_for_all_gcs_sec->last();
|
return _recent_prev_end_times_for_all_gcs_sec->oldest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void G1Analytics::update_recent_gc_times(double end_time_sec,
|
void G1Analytics::update_recent_gc_times(double end_time_sec,
|
||||||
|
@ -155,7 +155,6 @@ public:
|
|||||||
void update_recent_gc_times(double end_time_sec, double elapsed_ms);
|
void update_recent_gc_times(double end_time_sec, double elapsed_ms);
|
||||||
void compute_pause_time_ratio(double interval_ms, double pause_time_ms);
|
void compute_pause_time_ratio(double interval_ms, double pause_time_ms);
|
||||||
|
|
||||||
double oldest_known_gc_end_time_sec() const;
|
|
||||||
double last_known_gc_end_time_sec() const;
|
double last_known_gc_end_time_sec() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
#include "classfile/symbolTable.hpp"
|
#include "classfile/symbolTable.hpp"
|
||||||
#include "code/codeCache.hpp"
|
#include "code/codeCache.hpp"
|
||||||
#include "code/icBuffer.hpp"
|
#include "code/icBuffer.hpp"
|
||||||
#include "gc/g1/g1Analytics.hpp"
|
|
||||||
#include "gc/g1/bufferingOopClosure.hpp"
|
#include "gc/g1/bufferingOopClosure.hpp"
|
||||||
#include "gc/g1/concurrentG1Refine.hpp"
|
#include "gc/g1/concurrentG1Refine.hpp"
|
||||||
#include "gc/g1/concurrentG1RefineThread.hpp"
|
#include "gc/g1/concurrentG1RefineThread.hpp"
|
||||||
@ -2474,19 +2473,8 @@ size_t G1CollectedHeap::max_capacity() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
jlong G1CollectedHeap::millis_since_last_gc() {
|
jlong G1CollectedHeap::millis_since_last_gc() {
|
||||||
jlong now = os::elapsed_counter() / NANOSECS_PER_MILLISEC;
|
// assert(false, "NYI");
|
||||||
const G1Analytics* analytics = _g1_policy->analytics();
|
return 0;
|
||||||
double last = analytics->last_known_gc_end_time_sec();
|
|
||||||
jlong ret_val = now - (last * 1000);
|
|
||||||
if (ret_val < 0) {
|
|
||||||
// See the notes in GenCollectedHeap::millis_since_last_gc()
|
|
||||||
// for more information about the implementation.
|
|
||||||
log_warning(gc)("Detected clock going backwards. "
|
|
||||||
"Milliseconds since last GC would be " JLONG_FORMAT
|
|
||||||
". returning zero instead.", ret_val);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return ret_val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void G1CollectedHeap::prepare_for_verify() {
|
void G1CollectedHeap::prepare_for_verify() {
|
||||||
|
@ -604,7 +604,7 @@ void G1DefaultPolicy::record_collection_pause_end(double pause_time_ms, size_t c
|
|||||||
_analytics->report_alloc_rate_ms(alloc_rate_ms);
|
_analytics->report_alloc_rate_ms(alloc_rate_ms);
|
||||||
|
|
||||||
double interval_ms =
|
double interval_ms =
|
||||||
(end_time_sec - _analytics->oldest_known_gc_end_time_sec()) * 1000.0;
|
(end_time_sec - _analytics->last_known_gc_end_time_sec()) * 1000.0;
|
||||||
_analytics->update_recent_gc_times(end_time_sec, pause_time_ms);
|
_analytics->update_recent_gc_times(end_time_sec, pause_time_ms);
|
||||||
_analytics->compute_pause_time_ratio(interval_ms, pause_time_ms);
|
_analytics->compute_pause_time_ratio(interval_ms, pause_time_ms);
|
||||||
}
|
}
|
||||||
|
@ -1256,21 +1256,21 @@ class GenTimeOfLastGCClosure: public GenCollectedHeap::GenClosure {
|
|||||||
};
|
};
|
||||||
|
|
||||||
jlong GenCollectedHeap::millis_since_last_gc() {
|
jlong GenCollectedHeap::millis_since_last_gc() {
|
||||||
// javaTimeNanos() is guaranteed to be monotonically non-decreasing
|
// We need a monotonically non-decreasing time in ms but
|
||||||
// provided the underlying platform provides such a time source
|
// os::javaTimeMillis() does not guarantee monotonicity.
|
||||||
// (and it is bug free). So we still have to guard against getting
|
|
||||||
// back a time later than 'now'.
|
|
||||||
jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
|
jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
|
||||||
GenTimeOfLastGCClosure tolgc_cl(now);
|
GenTimeOfLastGCClosure tolgc_cl(now);
|
||||||
// iterate over generations getting the oldest
|
// iterate over generations getting the oldest
|
||||||
// time that a generation was collected
|
// time that a generation was collected
|
||||||
generation_iterate(&tolgc_cl, false);
|
generation_iterate(&tolgc_cl, false);
|
||||||
|
|
||||||
|
// javaTimeNanos() is guaranteed to be monotonically non-decreasing
|
||||||
|
// provided the underlying platform provides such a time source
|
||||||
|
// (and it is bug free). So we still have to guard against getting
|
||||||
|
// back a time later than 'now'.
|
||||||
jlong retVal = now - tolgc_cl.time();
|
jlong retVal = now - tolgc_cl.time();
|
||||||
if (retVal < 0) {
|
if (retVal < 0) {
|
||||||
log_warning(gc)("Detected clock going backwards. "
|
NOT_PRODUCT(log_warning(gc)("time warp: " JLONG_FORMAT, retVal);)
|
||||||
"Milliseconds since last GC would be " JLONG_FORMAT
|
|
||||||
". returning zero instead.", retVal);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return retVal;
|
return retVal;
|
||||||
|
Loading…
Reference in New Issue
Block a user