From 5395b2af579e71d26706a1fa9db02a969aea558e Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Fri, 19 Mar 2021 12:37:39 -0700 Subject: [PATCH] Lazy load the allocation of Slog message formatting objects. Test: manual verification looking at logcat output Fixes: 182963900 Change-Id: If62ccfe085b20cda8755fefc3ec757ad59986685 --- core/java/android/util/Slog.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/core/java/android/util/Slog.java b/core/java/android/util/Slog.java index f61ab29851635..d3eaeae993e68 100644 --- a/core/java/android/util/Slog.java +++ b/core/java/android/util/Slog.java @@ -30,11 +30,11 @@ import java.util.Locale; */ public final class Slog { - @GuardedBy("sMessageBuilder") - private static final StringBuilder sMessageBuilder = new StringBuilder(); + @GuardedBy("Slog.class") + private static StringBuilder sMessageBuilder; - @GuardedBy("sMessageBuilder") - private static final Formatter sFormatter = new Formatter(sMessageBuilder, Locale.ENGLISH); + @GuardedBy("Slog.class") + private static Formatter sFormatter; private Slog() { } @@ -226,7 +226,12 @@ public final class Slog { } private static String getMessage(String format, @Nullable Object... args) { - synchronized (sMessageBuilder) { + synchronized (Slog.class) { + if (sMessageBuilder == null) { + // Lazy load so they're not created if not used by the process + sMessageBuilder = new StringBuilder(); + sFormatter = new Formatter(sMessageBuilder, Locale.ENGLISH); + } sFormatter.format(format, args); String message = sMessageBuilder.toString(); sMessageBuilder.setLength(0);