RFR (XS) 8071770 G1 does not implement millis_since_last_gc which is needed by RMI GC

Thomas Schatzl thomas.schatzl at oracle.com
Thu Jul 14 09:01:35 UTC 2016


Hi,

On Wed, 2016-07-13 at 15:03 -0400, Joseph Provino wrote:
> Please review this small change to implement millis_since_last_gc in
> G1.
> CR: JDK-8071770 G1 does not implement millis_since_last_gc which is
> needed by RMI GC
> Webrev:  http://cr.openjdk.java.net/~jprovino/8071770/webrev.00
> Passes JPRT.
> Passes test included in the CR.
> thanks.

- in G1CollectedHeap::millis_since_last_gc():

2477   // We need a monotonically non-decreasing time in ms but
2478   // os::javaTimeMillis() does not guarantee monotonicity.
2479   jlong now = os::elapsed_counter() / NANOSECS_PER_MILLISEC;
2480   const G1Analytics* analytics = _g1_policy->analytics();
2481   double last = analytics->last_known_gc_end_time_sec();
2482   jlong ret_val = now - (last * 1000);
2483   // XXX See note in genCollectedHeap::millis_since_last_gc().
2484   if (ret_val < 0) {
2485     NOT_PRODUCT(log_warning(gc)("time warp: " JLONG_FORMAT,
ret_val);)
2486     return 0;
2487   }
2488   return ret_val;

Line 2478 references a method that is not called in this piece of code;
2483 seems to be a continuation of 2478, and what is the purpose of the
"XXX"?

I also think that the line in 2485 should not be NOT_PRODUCT. It is
definitely interesting to have these kinds of issues printed in the log
if they occur. The log message itself is nondescriptive.

I would prefer only a reference to
GenCollectedHeap::millis_since_last_gc() (and fixing the comment in
that method, because it uses os::javaTimeNanos() and not
os::javaTimeMillis(); and actually there are two semi-conflicting
comments in that method too - just removing the first comment should be
fine). The other reason is that the current comments duplicate some
parts of that comment, which seems bad.

Thanks,
  thomas



More information about the hotspot-gc-dev mailing list