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()的主要内容,如果未能解决你的问题,请参考以下文章