@Override public void run() { startTimeNanos = System.nanoTime(); gcDataBuf[startIdx].setValues(startTimeNanos, 0); while (shouldRun) { long intervalStartTsNanos = System.nanoTime(); try { Thread.sleep(sleepIntervalMs); } catch (InterruptedException ie) { return; } long intervalEndTsNanos = System.nanoTime(); calculateGCTimePercentageWithinObservedInterval(intervalStartTsNanos, intervalEndTsNanos); if (alertHandler != null && curData.gcTimePercentage > maxGcTimePercentage) { alertHandler.alert(curData.clone()); } } }
/** Returns a copy of the most recent data measured by this monitor. */ public GcData getLatestGcData() { return curData.clone(); }