From d9d7047af1a091807b4ec9ebb403b22811f323c6 Mon Sep 17 00:00:00 2001 From: Douglas Q Hawkins Date: Tue, 17 Feb 2026 15:42:07 -0500 Subject: [PATCH 1/2] Saving buildGitInfo lambda into a member variable Unfortunately, profiles show the lambda from this:::buildGitIInfo being a hot allocation point. That would suggest that escape analysis wasn't able to kick in here. So I introduced a member variable to hold the variable to avoid repeatedly allocating --- .../main/java/datadog/trace/api/git/GitInfoProvider.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/internal-api/src/main/java/datadog/trace/api/git/GitInfoProvider.java b/internal-api/src/main/java/datadog/trace/api/git/GitInfoProvider.java index 9550a16236e..be0efddda24 100644 --- a/internal-api/src/main/java/datadog/trace/api/git/GitInfoProvider.java +++ b/internal-api/src/main/java/datadog/trace/api/git/GitInfoProvider.java @@ -47,6 +47,10 @@ public class GitInfoProvider { // in the same daemon is unlikely private final DDCache gitInfoCache = DDCaches.newFixedSizeCache(4); + // DQH - The lambda in getGitInfo was a hot allocation point, so + // pulled the lambda into a member variable to avoid constantly allocating. + final Function buildGitInfoFn = this::buildGitInfo; + public GitInfo getGitInfo() { return getGitInfo(null); } @@ -56,7 +60,7 @@ public GitInfo getGitInfo(@Nullable String repositoryPath) { repositoryPath = NULL_PATH_STRING; } - return gitInfoCache.computeIfAbsent(repositoryPath, this::buildGitInfo); + return gitInfoCache.computeIfAbsent(repositoryPath, buildGitInfoFn); } private GitInfo buildGitInfo(String repositoryPath) { From f0560d173594adb4c2c5059fe8c4e3af5ec46d2c Mon Sep 17 00:00:00 2001 From: Douglas Q Hawkins Date: Tue, 17 Feb 2026 17:25:22 -0500 Subject: [PATCH 2/2] spotless --- .../src/main/java/datadog/trace/api/git/GitInfoProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal-api/src/main/java/datadog/trace/api/git/GitInfoProvider.java b/internal-api/src/main/java/datadog/trace/api/git/GitInfoProvider.java index be0efddda24..5dc94e713bc 100644 --- a/internal-api/src/main/java/datadog/trace/api/git/GitInfoProvider.java +++ b/internal-api/src/main/java/datadog/trace/api/git/GitInfoProvider.java @@ -47,7 +47,7 @@ public class GitInfoProvider { // in the same daemon is unlikely private final DDCache gitInfoCache = DDCaches.newFixedSizeCache(4); - // DQH - The lambda in getGitInfo was a hot allocation point, so + // DQH - The lambda in getGitInfo was a hot allocation point, so // pulled the lambda into a member variable to avoid constantly allocating. final Function buildGitInfoFn = this::buildGitInfo;