Android内存转储中的EGL和GL mtrack是什么

Android内存转储中的EGL和GL mtrack是什么,android,performance,xamarin,Android,Performance,Xamarin,我目前正在开发一个混合应用程序,它展示了一些我试图调试的特殊内存使用情况。一旦应用程序启动,它似乎立即使用了接近250MB的内存,考虑到我们当时只加载了登录屏幕,这似乎太过分了。我一直在看一些Android内存分析工具(SDK附带的Xamarin profiler和Android profiler),但它们都显示出相对较低的堆使用率(约10-15MB,我正在尝试降低)。我运行了“adb shell dumpsys meminfo APPNAME-d”,并得到以下跟踪: ** MEMINFO in

我目前正在开发一个混合应用程序,它展示了一些我试图调试的特殊内存使用情况。一旦应用程序启动,它似乎立即使用了接近250MB的内存,考虑到我们当时只加载了登录屏幕,这似乎太过分了。我一直在看一些Android内存分析工具(SDK附带的Xamarin profiler和Android profiler),但它们都显示出相对较低的堆使用率(约10-15MB,我正在尝试降低)。我运行了“adb shell dumpsys meminfo APPNAME-d”,并得到以下跟踪:

** MEMINFO in pid 24925 [APPNAME] **
                   Pss  Private  Private  Swapped     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap    19439    19396        0        0    28672    22915     5756
  Dalvik Heap    15441    14992        0        0    37319    36837      482
 Dalvik Other      542      368        0        0                           
        Stack      432      432        0        0                           
       Ashmem    17388    16508      880        0                           
      Gfx dev    40538    34504        0        0                           
    Other dev        4        0        4        0                           
     .so mmap     6211      224     3080        0                           
    .apk mmap    10531        0    10232        0                           
    .ttf mmap      453        0      260        0                           
    .dex mmap     1263        0      980        0                           
    .oat mmap      635        0      152        0                           
    .art mmap      707      516       24        0                           
   Other mmap      452        4       52        0                           
   EGL mtrack    63508    63508        0        0                           
    GL mtrack    79116    79116        0        0                           
      Unknown    21756    21756        0        0                           
        TOTAL   278416   251324    15664        0    65991    59752     6238
我一直试图通过使用提供的文档来理解这意味着什么,但该页面似乎没有关于最大的罪魁祸首的任何信息:Gfx dev、EGL mtrack、GL mtrack和Unknown。是否有一些文档说明这些类别是什么,或者为什么它们会变得如此庞大


感谢

EGL和GL在此显示了图形层基本上消耗的内存。我确信您正在Android棒棒糖设备上运行
adb shell dumpsys meminfo
命令。实际上,在棒棒糖中修改了dumpsys meminfo工具/命令,以计算和显示图形内存

在旧版本(KitKat或旧版本)中,您无法找到EGL和GL信息,尽管图形在KitKat或旧版本中也会消耗内存

这是我们可以要求谷歌更新他们的文档来解释新的内存组件。简言之,你可以说这是Android文档中的bug。他们应该按照最新的
adb shell dumpsys meminfo
tool/command实现来更新它

参考资料:

EGL-


GL-

GL mtrack是驱动程序报告的GL内存使用量。它主要是GL纹理大小、GL命令缓冲区、固定全局驱动程序RAM开销等的总和

EGL mtrack是一个全局内存使用量。它主要是SurfaceView/TextureView的总和