diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java index a9a34f810ff..c38f4994c3a 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java @@ -1230,9 +1230,10 @@ void write(final List trace) { // run early tag postprocessors before publishing to the metrics writer since peer / base // service are needed - for (DDSpan span : writtenTrace) { - span.processServiceTags(); - } + + // DQH - Using forEach avoids ArrayList$Iter allocation + writtenTrace.forEach(DDSpan::processServiceTags); + boolean forceKeep = metricsAggregator.publish(writtenTrace); TraceCollector traceCollector = writtenTrace.get(0).context().getTraceCollector();