我目前正在开发一个混合应用程序,它展示了一些我正在尝试调试的特殊内存使用情况。应用程序一启动,它就会立即使用接近250 at的内存,考虑到我们在这一点上所加载的只是登录屏幕,这似乎过度了。我一直在研究一些用于Android的内存分析工具(随SDK附带的Xamarin分析器和android分析器),但它们的堆使用率都相对较低(大约10-15MB,我正在试着降低)。我运行了“亚行外壳虚拟内存信息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、EGL、GL mtrack和Unknown。是否有一些关于这些类别是什么或者为什么它们会变得如此庞大的文档?
谢谢
发布于 2015-06-09 09:13:38
EGL和GL在这里显示了图形层所消耗的内存。我相信你正在安卓棒棒糖设备上运行adb shell dumpsys meminfo
命令。实际上,虚拟的meminfo工具/命令已经在棒棒糖中进行了修改,以计算和显示图形内存。
在旧版本(KitKat或更高版本)中,您无法找到EGL和GL信息,尽管图形占用了KitKat或旧版本中的内存。
这是我们可以要求谷歌更新他们的文档来解释新的内存组件。简而言之,您可以说这是Android文档中的错误。他们应该按照adb shell dumpsys meminfo
工具/命令的最新实现来更新它。
参考文献:
EGL - (API)
发布于 2016-05-13 09:12:06
GL磁道是驱动程序报告的GL内存使用情况。它主要是GL纹理大小、GL命令缓冲区、固定全局驱动程序RAM开销等的总和。
EGL跟踪是通用内存的使用。它主要是表面视图/文本视图的总和。
https://stackoverflow.com/questions/30337044
复制相似问题