移动App性能测评与优化1.2.4 新的问题

简介:

1.2.4 新的问题

经过上一轮的优化,在内存监视器里新版本的Heap内存表现已经比较好了,新功能只消耗了几万字节到几十万字节内存。但是要注意的是,Heap内存并不是应用的全部,我们在设置或其他管理工具里看到的应用内存大小是应用整个进程的内存使用量。也有可能出现Heap部分完全没有增长而其他部分增长的情况。

要观察进程的内存使用情况,就需要用到其他的观测工具,Android里最常用于观察进程内存的方法就是dumpsys meminfo <package name|pid>命令。

对我们的新版应用执行该命令,能够得到以下的输出结果:

** MEMINFO in pid 17481 [com.example] **

                         Shared  Private     Heap     Heap     Heap

                   Pss    Dirty    Dirty     Size    Alloc     Free

                ------   ------   ------   ------   ------   ------

       Native       28        8       28     5744     3739     1117

 Dalvik Heap    10112    10224     9624    14076    10386     3690

 Dalvik Other     3212     3076        0        0

        Stack      270      270        0        0

       Ashmem        2        0        0        0

    Other dev        7        0        4        0

     .so mmap     1867     1330      160        0

    .jar mmap        4        0        4        0

    .apk mmap     2944        0     2690        0

    .dex mmap     4110       64     3420        0

   Other mmap       16        4        4        0

      Unknown     2351     2331        0        0

        TOTAL    24895    12404     6212        0

在以上输出结果中,左边Pss列的数据标识进程各部分对真实物理内存的消耗,左下角的TOTAL值就是我们在各种管理工具里看到的应用内存消耗。

而Android Studio等工具里显示的内存值,在这里是Dalvik Heap Alloc部分。根据以上的数据,我们可以看到Dalvik Heap和Heap Alloc不是相等的,而且除了Dalvik Heap之外,还有其他很多部分也会消耗内存。

这时候我们再对比一下旧版,看看是否也如此:

** MEMINFO in pid 14233 [com.example] **

                         Shared  Private     Heap     Heap     Heap

                   Pss    Dirty    Dirty     Size    Alloc     Free

                ------   ------   ------   ------   ------   ------

       Native       28        8       28     5664     3767     1040

 Dalvik Heap     8026    10372     7508    11784    10113     1671

 Dalvik Other    3159     3076        0        0

        Stack      260      260        0        0

       Ashmem        2        0        0        0

    Other dev        7        0        4        0

     .so mmap     1887     1344      160        0

    .jar mmap        4        0        4        0

    .apk mmap     2941        0     2680        0

    .dex mmap     4013       64     3360        0

   Other mmap       16        4        4        0

      Unknown     2256     2244        0        0

        TOTAL    22599    17372    13716        0

这时候就会发现问题了,Heap Alloc没增加多少,但Dalvik Heap Pss增加了许多。而其他部分基本保持不变或有少量增长。可见问题还是出现在Dalvik Heap部分,但只靠检查分配的对象是看不出来问题的。

Java代码的内存分配和释放都是由虚拟机管理的,那么这个问题会是虚拟机的问题吗?我们接下来继续通过虚拟机部分机制来探索这些内存增长的原因。

相关文章
|
3月前
|
JSON Dart 安全
Flutter App混淆加固、保护与优化原理
Flutter App混淆加固、保护与优化原理
49 0
|
3月前
|
架构师 Java
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
52 0
|
6月前
|
Web App开发 数据安全/隐私保护 iOS开发
app优化ios,iOS app上架流程问题集锦,ASO新手小白必看(上)
app优化ios,iOS app上架流程问题集锦,ASO新手小白必看(上)
|
3月前
|
存储 缓存 算法
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
57 0
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
|
4月前
|
JSON Dart 安全
Flutter App混淆加固、保护与优化原理
在移动应用程序开发中,保护应用程序的代码和数据安全至关重要。本文将探讨如何对Flutter应用程序进行混淆、优化和保护,以提高应用程序的安全性和隐私。
|
7月前
|
网络协议 安全 数据安全/隐私保护
直播app源码,QUIC协议:改善性能与安全性
由于QUIC协议作为一个多种协议集成的一项新型协议创新,被应用到直播app源码平台中,能帮助平台提高性能与安全性,提供给用户更可靠、更优质的直播体验。
直播app源码,QUIC协议:改善性能与安全性
|
10月前
|
JavaScript
Vue3.0项目——打造企业级音乐App(二)图片懒加载、v-loading指令的开发和优化
Vue3.0项目——打造企业级音乐App(二)图片懒加载、v-loading指令的开发和优化
126 0
|
11月前
|
算法 数据可视化 搜索推荐
数据如何指导决策:优酷主客APP播转率的C端优化
数据如何指导决策:优酷主客APP播转率的C端优化
231 0
|
12月前
|
数据采集 缓存 数据可视化
APP性能测试方法&工具
APP性能测试方法&工具
《圆桌讨论: 从趋势、工具或相关的技术点谈APP的优化》电子版地址
圆桌讨论: 从趋势、工具或相关的技术点谈APP的优化
48 0
《圆桌讨论: 从趋势、工具或相关的技术点谈APP的优化》电子版地址

热门文章

最新文章