作为Android CI的一部分运行一些内存分析

时间:2016-05-10 17:07:02

标签: android continuous-integration profiling

需要一些指针/想法,以自动方式在Android App上计算基线和一些基本内存统计数据,作为CI的一部分。

有人试过通过测试吗?有什么经验教训?我知道覆盖分析插件,但没有任何插件可以帮助计算特定情况下某个APK的内存占用。

目标不一定是问题所在的关键点,但有助于标记应用程序的内存消耗增加/减少,请参阅趋势并帮助发出可能的问题并需要进一步挖掘

1 个答案:

答案 0 :(得分:0)

最好的方法是手动配置您的应用。重复执行一项活动,并使用内存演练,堆查看器和分配跟踪器一起查找问题。

但是,如果你必须通过CI(AFAIK没有可用的插件)来做,有两种方法可以解决它:

1)运行CI UI测试用例并使用dumpsys:

在测试开始时,每个TC之后以及每个TC结束时使用dumps:

Runtime.getRuntime().exec(new String[]{ADB_PATH,"shell","dumpsys meminfo com.example.app >/sdcard/memdump"+filename+".txt","exit","adb pull memdump"+i+".txt"});

这应该给你一个filename.txt,你的应用程序是meminfo。您需要的是您的应用的PSS值。更多PSS值更多的是应用程序的内存占用量。只需将文件作为流打开即可。使用模式搜索获取PSS值,并在每个TC后将其保存在列表中。这样,在测试之后,您将在应用中的各个点获得PSS值列表。您可以从中创建趋势/图表。

如果它是严格的线性图,那么你应该深入研究。除此之外,你不会遇到很多问题。

2)编写一个重复执行的套件并使用dumpsys:

发现偷偷摸摸的内存泄漏需要您反复执行某些操作(比如启动活动50次) 假设您有一个主页,您可以从菜单栏刷新它。

现在写一个TC:

  • a)进入菜单栏并单击刷新按钮。
  • b)转储meminfo,获取PSS并将其保存在列表中。
  • c)重复
  • d)反复这样做,让我们说50次,然后为该特定活动制作趋势图。

这将是一个套房的时间,但你将获得的趋势将是有意义的,应该找到你的好问题。

我建议你选择2.另外,如果有人能提出任何改进或其他方式,那就太棒了。