From 3005152843f95df1681f2411a7a23fe2a325b5b3 Mon Sep 17 00:00:00 2001 From: Marc Weiss Date: Wed, 17 Nov 2021 04:14:14 +0000 Subject: [PATCH] In a head dump review, LogMessageImpl was seen as serveral top objects when sorted by size. This change will set a maximum cap on log size to 20 items for LogMessageImpl on low_ram (go) devices. This change reduces the memory footprint of com.android.systemui post-boot. Test: manual Bug:188842641 - refer to comment #48 - https://b.corp.google.com/issues/188842641#comment48 Change-Id: I0ef72c629241990e5f5ec877aade5af03626d83f --- .../src/com/android/systemui/log/LogBufferFactory.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/log/LogBufferFactory.kt b/packages/SystemUI/src/com/android/systemui/log/LogBufferFactory.kt index 0622df3dbb43f..5296ee603f402 100644 --- a/packages/SystemUI/src/com/android/systemui/log/LogBufferFactory.kt +++ b/packages/SystemUI/src/com/android/systemui/log/LogBufferFactory.kt @@ -16,6 +16,7 @@ package com.android.systemui.log +import android.app.ActivityManager import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dump.DumpManager import javax.inject.Inject @@ -25,9 +26,18 @@ class LogBufferFactory @Inject constructor( private val dumpManager: DumpManager, private val logcatEchoTracker: LogcatEchoTracker ) { + /* limit the size of maxPoolSize for low ram (Go) devices */ + private fun poolLimit(maxPoolSize_requested: Int): Int { + if (ActivityManager.isLowRamDeviceStatic()) { + return minOf(maxPoolSize_requested, 20) /* low ram max log size*/ + } else { + return maxPoolSize_requested + } + } + @JvmOverloads fun create(name: String, maxPoolSize: Int, flexSize: Int = 10): LogBuffer { - val buffer = LogBuffer(name, maxPoolSize, flexSize, logcatEchoTracker) + val buffer = LogBuffer(name, poolLimit(maxPoolSize), flexSize, logcatEchoTracker) dumpManager.registerBuffer(name, buffer) return buffer }