< prev index next >

src/share/vm/gc/shared/genCollectedHeap.cpp

Print this page

        

*** 1254,1278 **** _time = MIN2(_time, gen->time_of_last_gc(_now)); } }; jlong GenCollectedHeap::millis_since_last_gc() { ! // We need a monotonically non-decreasing time in ms but ! // os::javaTimeMillis() does not guarantee monotonicity. 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); - // 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(); if (retVal < 0) { ! NOT_PRODUCT(log_warning(gc)("time warp: " JLONG_FORMAT, retVal);) return 0; } return retVal; } --- 1254,1277 ---- _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; }
< prev index next >