【问题标题】:Running some memory analysis as part of Android CI作为 Android CI 的一部分运行一些内存分析
【发布时间】:2016-05-10 17:07:01
【问题描述】:

作为 CI 的一部分,需要一些指针/想法来以自动化方式计算 Android 应用上的基线和一些基本内存统计信息。

有人试过通过测试来做到这一点吗?有什么经验教训吗?我知道覆盖率分析插件,但没有任何插件可以帮助计算特定场景中某个 APK 的内存占用。

目标不一定是问题所在,而是帮助标记应用程序的内存消耗增加/减少,查看趋势并帮助表明可能存在的问题并需要进一步挖掘

【问题讨论】:

    标签: android continuous-integration profiling


    【解决方案1】:

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

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

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

    在测试开始、每个 TC 之后和每个 TC 结束时使用 dumpsys:

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

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

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

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

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

    现在写一个TC:

    • a) 转到菜单栏并单击刷新按钮。
    • b) 转储 meminfo ,获取 PSS 并将其保存在列表中。
    • c) 重复一个
    • d) 重复执行此操作,比如说 50 次,然后为该特定活动制作趋势图。

    这将是一个耗时的套件,但您将获得的趋势将是有意义的,并且应该会为您找到好的问题。

    我建议你使用 2。另外,如果有人可以提出任何改进或其他方式,那就太棒了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 2013-04-16
      • 2011-07-14
      相关资源
      最近更新 更多