【发布时间】:2015-02-21 10:16:25
【问题描述】:
这是我在分析 android jar 在棒棒糖中的兼容性时发现的一个奇怪问题。我是 android 新手。我写了一个简单的应用程序,它有一个屏幕和一个按钮,按下按钮时,它会调用jar 中的方法来执行一些服务器调用。我使用 adb 命令来分析应用程序的内存占用,
adb shell dumpsys meminfo <package_name>
这是 kitkat 中的足迹,(我没有添加其余行,因为我们只关心足迹中 dalvik heap 的私有脏列,因为那是专门为应用程序分配的 RAM包括我们自己的分配。)
** MEMINFO in pid 876 [XXXXX] **
Pss Private Private Swapped Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 3054 3032 0 0 6208 5733 178
Dalvik Heap 4338 4012 0 0 12756 11514 1242
这是棒棒糖中的足迹,
** MEMINFO in pid 201 [XXXX] **
Pss Private Private Swapped Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 3412 3360 0 0 5572 5236 335
Dalvik Heap 10359 10132 0 0 18762 11338 7424
如果您比较两者中私有脏列中的 dalvik 堆,kitkat 使用大约 4MB 的 RAM,而 lollipop 使用大约 10MB 的 RAM。它是在两个操作系统中执行的同一个应用程序,差异很大。
基于此的几个问题,
- 你们中有人看到棒棒糖中这种增加的内存消耗吗?。
- 知道为什么棒棒糖的 RAM 使用率更高吗?
- 是否有工具可以可视化应用的 RAM 分配?
PS:我在棒棒糖中获取了应用程序的堆转储,我可以看到 android.res.Resources 系统类对象使用了 4.4 MB 内存。我不知道这些资源对象可能是什么,因为应用程序和 jar 都没有静态资源。
【问题讨论】:
标签: android performance android-5.0-lollipop android-4.4-kitkat dalvik