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

Commit 4d90d1ed authored by Dan Sandler's avatar Dan Sandler Committed by Daniel Sandler
Browse files

SystemUI heap monitor & hprof dump tile.

Adding the tile to your active set will start a continuous memory tracker,
updating the tile every minute with the latest pss value. Tapping the tile
will pull a full heap dump, zip it, and share it via ACTION_SEND.

Additionally, @integer/watch_heap_limit can be set to the heap size (in KB)
at which ActivityManager will automatically generate a heap dump and notify
the user when it's ready.

Available only on IS_DEBUGGABLE builds. Supplies limited. Order now!

Bug: 76208386
Test: atest com.android.systemui.util.leak.GarbageMonitorTest
Test: runtest systemui
Change-Id: I0434dd7dc330784c750469b013e40b31ef92638d
parent 3ac00cad
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -607,5 +607,6 @@
                <action android:name="com.android.intent.action.SHOW_KEYBOARD_SHORTCUTS" />
            </intent-filter>
        </receiver>

    </application>
</manifest>
+28 −0
Original line number Diff line number Diff line
<!--
Copyright (C) 2018 The Android Open Source Project

   Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:pathData="M16.0,5.0l-8.0,0.0l0.0,14.0l8.0,0.0z"
        android:fillAlpha="0.5"
        android:fillColor="#000000"/>
    <path
        android:pathData="M6,9 L6,7 L4,7 L4,5 L6,5 C6,3.9 6.9,3 8,3 L16,3 C17.1,3 18,3.9 18,5 L20,5 L20,7 L18,7 L18,9 L20,9 L20,11 L18,11 L18,13 L20,13 L20,15 L18,15 L18,17 L20,17 L20,19 L18,19 C18,20.1 17.1,21 16,21 L8,21 C6.9,21 6,20.1 6,19 L4,19 L4,17 L6,17 L6,15 L4,15 L4,13 L6,13 L6,11 L4,11 L4,9 L6,9 Z M16,19 L16,5 L8,5 L8,19 L16,19 Z"
        android:fillColor="#000000"/>
</vector>
+2 −0
Original line number Diff line number Diff line
@@ -491,4 +491,6 @@
         This name is in the ComponentName flattened format (package/class)  -->
    <string name="config_screenshotEditor" translatable="false"></string>

    <!-- On debuggable builds, alert the user if SystemUI PSS goes over this number (in kb) -->
    <integer name="watch_heap_limit">256000</integer>
</resources>
+5 −0
Original line number Diff line number Diff line
@@ -2227,4 +2227,9 @@

    <!-- URl of the webpage that explains battery saver. -->
    <string name="help_uri_battery_saver_learn_more_link_target" translatable="false"></string>

    <!-- Name for a quick settings tile, used only by platform developers, to extract the SystemUI process memory and send it to another
         app for debugging. Will not be seen by users. [CHAR LIMIT=20] -->
    <string name="heap_dump_tile_name">Dump SysUI Heap</string>

</resources>
+8 −4
Original line number Diff line number Diff line
@@ -247,7 +247,11 @@ public class Dependency extends SystemUI {
                getDependency(LeakDetector.class),
                getDependency(LEAK_REPORT_EMAIL)));

        mProviders.put(GarbageMonitor.class, () -> new GarbageMonitor(
        mProviders.put(
                GarbageMonitor.class,
                () ->
                        new GarbageMonitor(
                                mContext,
                                getDependency(BG_LOOPER),
                                getDependency(LeakDetector.class),
                                getDependency(LeakReporter.class)));
Loading