Android:持续内存消耗/dumpGfxInfo()

Posted

技术标签:

【中文标题】Android:持续内存消耗/dumpGfxInfo()【英文标题】:Android: Constant memory consumption / dumpGfxInfo() 【发布时间】:2015-11-08 13:33:58 【问题描述】:

假设:使用 android Studio 向导创建的一个简单 Activity,内部没有任何自定义代码,调用 dumpGfxInfo() 时会永久消耗内存。

Android Studio 在分配跟踪器中的构建显示至少 三个 线程在做同样的事情:

 --- 8< ------------------------------------------------------------------

 * < Thread 12 > 
   * execTransact():446, Binder (andoroid.os)   
     * onTransact():545, ApplicationThreadNative (android.app)
       * dumpGfxInfo():1107, ActivityThread$ApplicationThread (android.app)

 --- 8< -------------------------------------------------------------------

显然 dumpGfxInfo() 通过为空字符串分配内存来消耗内存。编译的唯一相关依赖项是 com.android.support:appcompat-v7:22.2.1

随着这种内存消耗,(有时)会出现以下异常:

15331-15364/ W/Binder﹕ Caught a RuntimeException from the binder stub implementation.
    java.lang.NullPointerException: Attempt to read from field 'android.view.HardwareRenderer android.view.View$AttachInfo.mHardwareRenderer' on a null object reference
            at android.view.WindowManagerGlobal.dumpGfxInfo(WindowManagerGlobal.java:466)
            at android.app.ActivityThread$ApplicationThread.dumpGfxInfo(ActivityThread.java:1107)
            at android.app.ApplicationThreadNative.onTransact(ApplicationThreadNative.java:548)
            at android.os.Binder.execTransact(Binder.java:446)

问题:如何修复/关闭此行为并摆脱它?

【问题讨论】:

【参考方案1】:

为了进一步的参考和任何来到这里的人:您必须禁用 GPU 分析,因为默认情况下它没有被禁用(Android Studio 2.1 Preview 4)。 您可以在“监视器”部分找到按钮(查看下图)

【讨论】:

谢谢你。两天以来,我一直试图在我的应用程序中找到内存泄漏,因为它不断显示内存峰值增加。原来一个 android 工作室的小丑一直在监视我的 GPU 并占用我的内存:\ 非常感谢,前两天我也一直在寻找漏洞。这正是我所需要的。【参考方案2】:

似乎是最新的 Android Studio 错误。 旧版本没有这个问题。 见this link

【讨论】:

非常感谢您的回答。 当我测试标记交互时,模拟器中会发生这种情况。跟 Android Studio 有什么关系?? @IgorGanapolsky 查看问题文本。即使是空项目也有这个问题:“使用 Android Studio 向导创建的简单 Activity,内部没有任何自定义代码,调用 dumpGfxInfo() 会永久消耗内存。” 和来自谷歌的评论:'感谢您的报告。是的,监控 GPU 对内存的影响很小(没有内存泄漏,只是活动)。我们将很快添加一个修复程序,您可以在其中选择要启用的监视器,我们会将 gpu 监视器默认设置为禁用。' 这可能是 Android SDK 中的错误,而不是 Android Studio。【参考方案3】:

所描述的行为已在最新的 SDK 更新 1.4 Beta(Build AI-141.2202261)中得到修复。

【讨论】:

以上是关于Android:持续内存消耗/dumpGfxInfo()的主要内容,如果未能解决你的问题,请参考以下文章

Android:LibGDX 2D游戏内存消耗

「android」查看应用占用cpu和内存消耗情况

经过多少内存消耗Android抛出OutOfMemoryException

一文读懂 Android 内存优化,让你的机器持续丝滑

Android内存泄漏原因分析

Xamarin - Sqlite.net 内存消耗非常高