移动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代码的内存分配和释放都是由虚拟机管理的,那么这个问题会是虚拟机的问题吗?我们接下来继续通过虚拟机部分机制来探索这些内存增长的原因。
相关文章
- LibreOffice 7.5 发布:漂亮的新应用图标和酷炫功能
- elementary OS 7 发布
- Windows 应用兼容层 Wine 8.1 发布:默认启用“Windows 10”前缀
- 微软正测试新功能:当 Windows 11 有新的小组件可用时会提醒通知
- 解析分布式存储选型和应用九个典型问题
- ClickHouse在自助行为分析场景的实践应用
- Chrome DevTools 远程调试安卓网页的原理
- Uni-app + Vue3 页面如何跳转及传参?
- 微软证实系统还原点会损坏 Windows 11 22H2 版本应用程序
- 巧用 Transition 实现短视频 APP 点赞动画
- 初学者试试,HarmonyOS应用开发者基础认证
- 媒体实测微软 Windows 开发工具包 2023:存在不兼容 HDR 显示器、某些应用无法运行等问题
- 快速了解Navigator API SetAppBadge
- 微软 Windows 11 Dev 预览版 Build 25276 发布,应用兼容问题对话框 UI 改进
- 基于Next.js、Prisma、Postgres和Fastfy构建全栈APP
- 开始菜单搜索框变圆角,微软 Windows 11 Beta 预览版 22621.1095 和 22623.1095 发布
- 2022-2023 十大应用开发趋势
- 观远数据发布业内首部《移动BI白皮书》,深入业务数字化场景重新定义移动BI
- Windows 10 学院:不借助第三方工具如何卸载 Windows 10 预装应用
- 正处高质量发展期,我国大数据产业突破1.3万亿元