Android 内存转储中的 EGL 和 GL mtrack 是什么
What is EGL and GL mtrack in Android Memory Dump
我目前正在开发一个混合应用程序,该应用程序显示出一些我正在尝试调试的特殊内存使用情况。应用程序一启动,它似乎立即使用了将近 250MB 的内存,考虑到我们此时加载的只是登录屏幕,这似乎过分了。我一直在寻找 Android 的一些内存分析工具(Xamarin 分析器和 SDK 附带的 android 分析器),但它们都显示出相对较低的堆使用率(~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
我一直在尝试使用 https://developer.android.com/tools/debugging/debugging-memory.html 提供的文档来理解这意味着什么,但该页面似乎没有关于最大罪魁祸首的任何信息:Gfx dev、EGL mtrack、 GL mtrack,和未知。是否有关于这些类别是什么或为什么它们会变得如此庞大的文档?
谢谢
EGL 和 GL 基本上显示了图形层消耗的内存。我确定您是 Android 棒棒糖设备上的 运行 adb shell dumpsys meminfo
命令。实际上lollipop中修改了dumpsys meminfo tool/command来计算和显示显存。
在旧版本(KitKat 或更旧版本)中,您找不到 EGL 和 GL 信息,尽管图形在 KitKat 或更旧版本中也消耗内存。
这是我们可以请求 Google 更新他们的文档来解释新的内存组件。简而言之,您可以说这是 Android 文档中的错误。他们应该根据 adb shell dumpsys meminfo
tool/command.
的最新实施更新它
参考文献:
GL mtrack 是驱动程序报告的 GL 内存使用情况。它主要是 GL 纹理大小、GL 命令缓冲区、固定全局驱动程序 RAM 开销等的总和。
EGL mtrack 是 gralloc 内存使用情况。它主要是 SurfaceView/TextureView.
的总和
我目前正在开发一个混合应用程序,该应用程序显示出一些我正在尝试调试的特殊内存使用情况。应用程序一启动,它似乎立即使用了将近 250MB 的内存,考虑到我们此时加载的只是登录屏幕,这似乎过分了。我一直在寻找 Android 的一些内存分析工具(Xamarin 分析器和 SDK 附带的 android 分析器),但它们都显示出相对较低的堆使用率(~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
我一直在尝试使用 https://developer.android.com/tools/debugging/debugging-memory.html 提供的文档来理解这意味着什么,但该页面似乎没有关于最大罪魁祸首的任何信息:Gfx dev、EGL mtrack、 GL mtrack,和未知。是否有关于这些类别是什么或为什么它们会变得如此庞大的文档?
谢谢
EGL 和 GL 基本上显示了图形层消耗的内存。我确定您是 Android 棒棒糖设备上的 运行 adb shell dumpsys meminfo
命令。实际上lollipop中修改了dumpsys meminfo tool/command来计算和显示显存。
在旧版本(KitKat 或更旧版本)中,您找不到 EGL 和 GL 信息,尽管图形在 KitKat 或更旧版本中也消耗内存。
这是我们可以请求 Google 更新他们的文档来解释新的内存组件。简而言之,您可以说这是 Android 文档中的错误。他们应该根据 adb shell dumpsys meminfo
tool/command.
参考文献:
GL mtrack 是驱动程序报告的 GL 内存使用情况。它主要是 GL 纹理大小、GL 命令缓冲区、固定全局驱动程序 RAM 开销等的总和。
EGL mtrack 是 gralloc 内存使用情况。它主要是 SurfaceView/TextureView.
的总和