对APP进⾏dumpsysmeminfo内存分析解读
使⽤adb shell dumpsys meminfo分析app内存截图:
Native Heap:Native代码分配的内存,虚拟机和Android框架分配内存。关于什么是Native代码,即⾮Java代码分配的内存。详细介绍请百度。
Dalvik Heap:Java对象分配的占据内存
Dalvik Other:类数据结构和索引占据内存
Stack:栈内存
Ashmem:不以dalvik- 开头的内存区域,匿名共享内存⽤来提供共享内存通过分配⼀个多个进程可以共享的带名称的内存块。匿名共享内存(Anonymous Shared Memory-Ashmem。Android匿名共享内存是基于Linux共享内存的,都是在tmpfs⽂件系统上新建⽂件,并将其映射到不同的进程空间,从⽽达到共享内存的⽬的,只是,Android在Linux的基础上进⾏了改造,并借助Binder+fd⽂件描述符实现了共享内存的传递。
Other dev:内部driver占⽤的内存
.so mmap  C库代码占⽤的内存
.jar mmap  java⽂件代码占⽤的内存
.apk mmap apk代码占⽤的内存
.ttf mmap  ttf⽂件代码占⽤的内存
.
dex mmap  dex⽂件代码占⽤内存。类函数的代码和常量占⽤的内存,dex mmap是映射classex.dex⽂件,Dalvik虚拟机从dex⽂件加载类信息和字符串常量等。Dex⽂件有索引区和Data区
Other mmap  其它⽂件占⽤的内存
Pss:进程各部分内存的消耗,是所有进程pss相加得到系统占⽤内存的总和。
Dalvik heap Pss内存=私有内存Private Dirty+ 共享内存Share Dirty/共享的进程数Dalvik heap Pss内存=私有内存Private Dirty+ 共享内存Share Dirty/共享的进程数
Heap Size:Dalvik Heap总共的内存⼤⼩
Heap Alloc:所有应⽤实例分配的内存,包括了应⽤从zygote共享分享的内存
Native Heap Size 约等于Native Heap Alloc + Native Heap Free
app内存测试⽅⾯的⼯具:
Android Studio/Memory Monitor:观察Dalvik内存
Dumpsys meminfo:观察整体内存
Smaps:观察整体内存的详细组成
Eclipse Memory Analyzer:详细分析Dalvik内存
app开发减少内存⽅法:
eclipse开发手机app尽量不要在循环中创建太多的临时变量
尽量把⼤型的循环拆散,分段或按需执⾏
引⼊SDK库和调⽤新的系统API时,主要不常⽤功能的消耗,可考虑多进程⽅案,影响内存放⼊临时进程执⾏调整Dex⽂件的顺序可以优化空间
欢迎讨论。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。