diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java index 6ac9a0a2b..3ed86e3a1 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java @@ -83,7 +83,7 @@ public class JVMService implements BootService, Runnable { jvmBuilder.addAllGc(GCProvider.INSTANCE.getGCList()); JVMMetric jvmMetric = jvmBuilder.build(); - if (queue.offer(jvmMetric)) { + if (!queue.offer(jvmMetric)) { queue.poll(); queue.offer(jvmMetric); } @@ -107,10 +107,11 @@ public class JVMService implements BootService, Runnable { JVMMetrics.Builder builder = JVMMetrics.newBuilder(); LinkedList buffer = new LinkedList(); queue.drainTo(buffer); - builder.addAllMetrics(buffer); - - builder.setApplicationInstanceId(RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID); - stub.collect(builder.build()); + if (buffer.size() > 0) { + builder.addAllMetrics(buffer); + builder.setApplicationInstanceId(RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID); + stub.collect(builder.build()); + } } catch (Throwable t) { logger.error(t, "send JVM metrics to Collector fail."); }