private String createLineProtocol(JvmClassMetrics metrics, long startNanos, StringBuilder sb) { sb.append("jvm_class_metrics") .append(",AppName=").append(ProfilingConfig.getInstance().getAppName()) .append(" Total=").append(metrics.getTotal()).append("i") .append(",Loaded=").append(metrics.getLoaded()).append("i") .append(",Unloaded=").append(metrics.getUnloaded()).append("i") .append(" ").append(startNanos); return sb.toString(); }
private void processJVMClassMetrics(long processId, long startMillis, long stopMillis) { JvmClassMetrics classMetrics = new JvmClassMetrics(ManagementFactory.getClassLoadingMXBean()); classMetricsProcessor.beforeProcess(processId, startMillis, stopMillis); try { classMetricsProcessor.process(classMetrics, processId, startMillis, stopMillis); } finally { classMetricsProcessor.afterProcess(processId, startMillis, stopMillis); } }
@Override public String format(List<JvmClassMetrics> metricsList, long startMillis, long stopMillis) { String dataTitleFormat = "%-10s%10s%10s%n"; StringBuilder sb = new StringBuilder((metricsList.size() + 2) * (12 * 3 + 64)); sb.append("MyPerf4J JVM Class Metrics [").append(DateFormatUtils.format(startMillis)).append(", ").append(DateFormatUtils.format(stopMillis)).append("]").append(String.format("%n")); sb.append(String.format(dataTitleFormat, "Total", "Loaded", "Unloaded")); if (metricsList.isEmpty()) { return sb.toString(); } String dataFormat = "%-10d%10d%10d%n"; for (int i = 0; i < metricsList.size(); ++i) { JvmClassMetrics metrics = metricsList.get(i); sb.append(String.format(dataFormat, metrics.getTotal(), metrics.getLoaded(), metrics.getUnloaded())); } return sb.toString(); }