private String createLineProtocol(JvmMemoryMetrics metrics, long startNanos, StringBuilder sb) { sb.append("jvm_memory_metrics") .append(",AppName=").append(ProfilingConfig.getInstance().getAppName()) .append(" NonHeapInit=").append(metrics.getNonHeapInit()) .append(",NonHeapUsed=").append(metrics.getNonHeapUsed()) .append(",NonHeapCommitted=").append(metrics.getNonHeapCommitted()) .append(",NonHeapMax=").append(metrics.getNonHeapMax()) .append(",HeapInit=").append(metrics.getHeapInit()) .append(",HeapUsed=").append(metrics.getHeapUsed()) .append(",HeapCommitted=").append(metrics.getHeapCommitted()) .append(",HeapMax=").append(metrics.getHeapMax()) .append(" ").append(startNanos); return sb.toString(); } }
private void processJVMMemoryMetrics(long processId, long startMillis, long stopMillis) { MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); MemoryUsage nonHeapMem = memoryMXBean.getNonHeapMemoryUsage(); MemoryUsage heapMem = memoryMXBean.getHeapMemoryUsage(); memoryMetricsProcessor.beforeProcess(processId, startMillis, stopMillis); try { memoryMetricsProcessor.process(new JvmMemoryMetrics(nonHeapMem, heapMem), processId, startMillis, stopMillis); } finally { memoryMetricsProcessor.afterProcess(processId, startMillis, stopMillis); } }
@Override public String format(List<JvmMemoryMetrics> metricsList, long startMillis, long stopMillis) { String dataTitleFormat = "%-19s%19s%19s%19s%19s%19s%19s%19s%n"; StringBuilder sb = new StringBuilder((metricsList.size() + 2) * (9 * 19 + 64)); sb.append("MyPerf4J JVM Memory Metrics [").append(DateFormatUtils.format(startMillis)).append(", ").append(DateFormatUtils.format(stopMillis)).append("]").append(String.format("%n")); sb.append(String.format(dataTitleFormat, "NonHeapInit", "NonHeapUsed", "NonHeapCommitted", "NonHeapMax", "HeapInit", "HeapUsed", "HeapCommitted", "HeapMax")); if (metricsList.isEmpty()) { return sb.toString(); } String dataFormat = "%-19d%19d%19d%19d%19d%19d%19d%19d%n"; for (int i = 0; i < metricsList.size(); ++i) { JvmMemoryMetrics metrics = metricsList.get(i); sb.append(String.format(dataFormat, metrics.getNonHeapInit(), metrics.getNonHeapUsed(), metrics.getNonHeapCommitted(), metrics.getNonHeapMax(), metrics.getHeapInit(), metrics.getHeapUsed(), metrics.getHeapCommitted(), metrics.getHeapMax())); } return sb.toString(); }