
cn.patterncat.metrics.jvm.ClassLoadingMetricSet Maven / Gradle / Ivy
The newest version!
package cn.patterncat.metrics.jvm;
import com.codahale.metrics.Gauge;
import com.codahale.metrics.Metric;
import com.codahale.metrics.MetricSet;
import java.lang.management.ClassLoadingMXBean;
import java.lang.management.ManagementFactory;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* 替换com/codahale/metrics/jvm/ClassLoadingGaugeSet.java
* 增加currentlyLoaded指标
*/
public class ClassLoadingMetricSet implements MetricSet {
private ClassLoadingMXBean classLoadingMXBean;
private Gauge totalLoadedClassesGauge;
private Gauge unloadedClassesGauge;
private Gauge currentlyLoadedClassesGauge;
private Map metricsByNames;
ClassLoadingMetricSet() {
this.classLoadingMXBean = ManagementFactory.getClassLoadingMXBean();
Map metricsByNames = new HashMap<>();
this.totalLoadedClassesGauge = new Gauge() {
@Override
public Long getValue() {
return classLoadingMXBean.getTotalLoadedClassCount();
}
};
metricsByNames.put("totalLoaded", totalLoadedClassesGauge);
this.unloadedClassesGauge = new Gauge() {
@Override
public Long getValue() {
return classLoadingMXBean.getUnloadedClassCount();
}
};
metricsByNames.put("totalUnloaded", unloadedClassesGauge);
this.currentlyLoadedClassesGauge = new Gauge() {
@Override
public Integer getValue() {
return classLoadingMXBean.getLoadedClassCount();
}
};
metricsByNames.put("currentlyLoaded", currentlyLoadedClassesGauge);
this.metricsByNames = metricsByNames;
}
@Override
public Map getMetrics() {
return Collections.unmodifiableMap(metricsByNames);
}
Gauge getTotalLoadedClassesGauge() {
return totalLoadedClassesGauge;
}
Gauge getUnloadedClassesGauge() {
return unloadedClassesGauge;
}
Gauge getCurrentlyLoadedClassesGauge() {
return currentlyLoadedClassesGauge;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy