JVM Integration for Metrics - A set of classes which allow you to monitor critical aspects of your Java Virtual Machine using Metrics
—
Class loading statistics including total loaded and unloaded class counts, providing insight into application lifecycle and potential class loading issues.
import com.codahale.metrics.jvm.ClassLoadingGaugeSet;
import com.codahale.metrics.MetricRegistry;
import java.lang.management.ClassLoadingMXBean;Monitors JVM class loading behavior through ClassLoadingMXBean integration.
/**
* A set of gauges for JVM classloader usage.
*/
public class ClassLoadingGaugeSet implements MetricSet {
/**
* Creates a new set of class loading gauges using the default ClassLoadingMXBean.
*/
public ClassLoadingGaugeSet();
/**
* Creates a new set of class loading gauges using a custom ClassLoadingMXBean.
* @param mxBean the ClassLoadingMXBean to use for statistics
*/
public ClassLoadingGaugeSet(ClassLoadingMXBean mxBean);
/**
* Returns all class loading metrics.
* @return map of metric names to Metric instances
*/
public Map<String, Metric> getMetrics();
}Metrics Provided:
loaded - Total number of classes loaded since JVM start (cumulative count)unloaded - Total number of classes unloaded since JVM start (cumulative count)Usage Examples:
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.jvm.ClassLoadingGaugeSet;
import java.lang.management.ManagementFactory;
// Basic usage with default ClassLoadingMXBean
MetricRegistry registry = new MetricRegistry();
registry.registerAll(new ClassLoadingGaugeSet());
// Access class loading metrics
Gauge<Long> totalLoaded = registry.getGauges().get("loaded");
Gauge<Long> totalUnloaded = registry.getGauges().get("unloaded");
System.out.println("Total classes loaded: " + totalLoaded.getValue());
System.out.println("Total classes unloaded: " + totalUnloaded.getValue());
// Calculate current loaded classes (approximation)
long currentlyLoaded = totalLoaded.getValue() - totalUnloaded.getValue();
System.out.println("Currently loaded classes: " + currentlyLoaded);
// Custom ClassLoadingMXBean usage
ClassLoadingMXBean customBean = ManagementFactory.getClassLoadingMXBean();
registry.registerAll(new ClassLoadingGaugeSet(customBean));
// Monitor class loading over time
long previousLoaded = totalLoaded.getValue();
long previousUnloaded = totalUnloaded.getValue();
// ... wait some time ...
long newLoaded = totalLoaded.getValue();
long newUnloaded = totalUnloaded.getValue();
long classesLoadedSinceLast = newLoaded - previousLoaded;
long classesUnloadedSinceLast = newUnloaded - previousUnloaded;
System.out.println("Classes loaded in period: " + classesLoadedSinceLast);
System.out.println("Classes unloaded in period: " + classesUnloadedSinceLast);Monitoring Patterns:
Performance Implications:
Common Use Cases:
Install with Tessl CLI
npx tessl i tessl/maven-io-dropwizard-metrics--metrics-jvm