< prev index next >
src/hotspot/share/gc/shared/genCollectedHeap.cpp
Print this page
rev 60420 : imported patch 8248401-Refactor-unify-RMI-gc-support-functionality
*** 1356,1394 ****
if (result != NULL) {
Copy::aligned_disjoint_words(cast_from_oop<HeapWord*>(obj), result, obj_size);
}
return oop(result);
}
-
- class GenTimeOfLastGCClosure: public GenCollectedHeap::GenClosure {
- jlong _time; // in ms
- jlong _now; // in ms
-
- public:
- GenTimeOfLastGCClosure(jlong now) : _time(now), _now(now) { }
-
- jlong time() { return _time; }
-
- void do_generation(Generation* gen) {
- _time = MIN2(_time, gen->time_of_last_gc(_now));
- }
- };
-
- jlong GenCollectedHeap::millis_since_last_gc() {
- // 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 now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
- GenTimeOfLastGCClosure tolgc_cl(now);
- // iterate over generations getting the oldest
- // time that a generation was collected
- generation_iterate(&tolgc_cl, false);
-
- jlong retVal = now - tolgc_cl.time();
- if (retVal < 0) {
- log_warning(gc)("millis_since_last_gc() would return : " JLONG_FORMAT
- ". returning zero instead.", retVal);
- return 0;
- }
- return retVal;
- }
--- 1356,1360 ----
< prev index next >