Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 30051528 authored by Marc Weiss's avatar Marc Weiss
Browse files

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
parent ee888a9b
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -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
    }