package org.gridkit.jvmtool.stacktrace.analytics; import org.gridkit.jvmtool.stacktrace.ThreadSnapshot; class FrequencyAggregatorFactory implements ThreadDumpAggregator, ThreadDumpAggregatorFactory { @Override public ThreadDumpAggregator newInstance() { return new FrequencyAggregatorFactory(); } long total; long minTs = Long.MAX_VALUE; long maxTs = Long.MIN_VALUE; @Override public void aggregate(ThreadSnapshot threadInfo) { ++total; minTs = Math.min(minTs, threadInfo.timestamp()); maxTs = Math.max(maxTs, threadInfo.timestamp()); } @Override public Object info() { if (total < 2) { return Double.NaN; } else { return 1000d * total / (maxTs - minTs); } } }