package org.gridkit.jvmtool.stacktrace.analytics; import org.gridkit.jvmtool.stacktrace.ThreadSnapshot; class NativeAggregatorFactory implements ThreadDumpAggregator, ThreadDumpAggregatorFactory { @Override public ThreadDumpAggregator newInstance() { return new NativeAggregatorFactory(); } long total; long matched; @Override public void aggregate(ThreadSnapshot threadInfo) { ++total; if (threadInfo.stackTrace().isEmpty() || threadInfo.stackTrace().frameAt(0).isNative()) { ++matched; } } @Override public Object info() { if (total > 0) { return ((double)matched) / total; } else { return Double.NaN; } } }