Android:常量内存消耗/ dumpGfxInfo()

Pry*_*yer 26 java memory android android-studio

给定:使用Android Studio向导创建的简单活动,内部没有任何自定义代码,永久消耗内存调用dumpGfxInfo().

Android Studio在Allocation Tracker中的构建显示至少有三个线程做同样的事情:

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

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

 --- 8< -------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

显然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)
Run Code Online (Sandbox Code Playgroud)

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

Tud*_*dor 28

有关进一步参考以及来自此处的任何人:您必须禁用GPU分析,因为默认情况下它未被禁用(Android Studio 2.1预览版4).您可以在"监视器"部分找到该按钮(请查看下图)在此输入图像描述

  • 谢谢你,兄弟.我试图在我的应用程序中找到内存泄漏两天,因为它不断显示内存峰值增加.原来一个安卓工作室的小丑不断监视我的GPU并占据我的记忆: (3认同)
  • 这应该是接受的答案.100%正确. (3认同)

aga*_*mov 20

好像它是最新的Android Studio bug.旧版本没有此问题.看到这个链接

  • 和谷歌人的评论:'谢谢你的报道.是的,监控GPU对内存的影响很小(没有内存泄漏,只有活动).我们将很快添加一个修补程序,您可以选择要启用的监视器,我们将默认将gpu监视器设置为禁用. (4认同)