From b42c64c5c71a40484e4415df15a266c66c84040d Mon Sep 17 00:00:00 2001 From: Brice Dutheil Date: Wed, 18 Jun 2025 16:37:27 +0200 Subject: [PATCH] feat: Skip JAXB generated classes classloader In a OSGI environment JAXB code generation creates a lot `com.ibm.xml.xlxp2.jaxb.codegen.AbstractGeneratedStubFactory$RootStubClassLoader` this classloader is used to define generated classes that must be actually defined in the correct OSGI bundle. Given the tracer needs to instrument classloading and also perform osgi bundle lookup this interaction create a lot of load in the tracer when these generated classes are defined. Given this classloader is used for the generated classes, it is safe to exclude skip it. --- .../agent/tooling/bytebuddy/matcher/ClassLoaderMatchers.java | 1 + 1 file changed, 1 insertion(+) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/ClassLoaderMatchers.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/ClassLoaderMatchers.java index c3ea303a705..0d48b73b59d 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/ClassLoaderMatchers.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/ClassLoaderMatchers.java @@ -44,6 +44,7 @@ public static boolean canSkipClassLoaderByName(final ClassLoader loader) { case "jdk.internal.reflect.DelegatingClassLoader": case "clojure.lang.DynamicClassLoader": case "org.apache.cxf.common.util.ASMHelper$TypeHelperClassLoader": + case "com.ibm.xml.xlxp2.jaxb.codegen.AbstractGeneratedStubFactory$RootStubClassLoader": case "sun.misc.Launcher$ExtClassLoader": case "datadog.trace.bootstrap.DatadogClassLoader": return true;