zoukankan      html  css  js  c++  java
  • monkey检测内存泄漏

    monkey中检查内存泄漏,实际上是对一个操作多次操作后看内存情况,内存泄漏具体的原理可百度,现在我们梳理检测内存泄漏的方法:

    测试前你需要安装:

    1.MAT分析工具

    2.使用工具事实监控内存指标,现在我们看具体的操作

    1测试应用程序先保存内存情况,可查看内存增长

    测试被测应用程序前,先保存没有运行前的运行程序的内存指标,并生成hprof文件用命令

    adb shell am dumpheap <进程名>  /data/local/tmp/new.hprof,

     

    并查看文件是否保存成功

     

    2.运行被测试应用时开启内存检测工具

    这时你需要开启内存监控工具,实时监控内存,并在他执行过程中看内存的指标变化是否很大,变化大,从1000一下就到2000,在到4000,内存持续增长,说明并没有被GC回收,很明确这里就有内存泄漏了

    下面是一个大神写的一个脚本好用

    set process=进程名
    
    @adb shell dumpsys meminfo %process% | findstr "Pss"
    
    :m
    
    @adb shell dumpsys meminfo %process% | findstr "TOTAL"
    
    @ping -n 5 127.1>nul
    
    @goto m

    构建成一个bat文件就可以执行了

    3.运行被测试应用

    怎么运行测试,还是要看具体的要求和自己构建的场景,一般跑一个APP最好是在5-6个小时形成一个曲线,才能看具体的一个实际情况,下面运行了两个比较简单的例子:

    1.屏幕旋转会带来内存泄漏,我也试了下,如下命令:

     

    2.在换成了随机运行并保存文件

     

    把以上文件都保存,并把它pull到电脑,我的是E盘

     

    用adb pull /data/local/tmp/new1.hprof e: est ew.hprof到E盘中

    注意因为MAT中不能够直接识别我们导出来的hprof文件,我们需要通过SDK的文件中带的hprof-conv进行转换

    如:我从手机上导出的文件是NEW.hpof

     

    之后使用MAT工具打开就好了

     

    下面就是分析了,MAT检测了一些可能是泄漏的点,可以查看,具体分析方法下回再来

  • 相关阅读:
    windows下Redis安装及使用
    DQL、DML、DDL、DCL的概念与区别
    成长路上破局思维:工具化时间管理
    git push 本地分支与远程分支关联
    vue elementUI table表格列动态渲染的案例
    flutter 页面频繁刷新节省页面性能的组件RepaintBoundary
    elementUI Table表格表头自定义
    vue 项目添加echarts图表
    flutter 高斯实现模糊
    flutter 监听软键盘的弹出和关闭
  • 原文地址:https://www.cnblogs.com/chongyou/p/5273227.html
Copyright © 2011-2022 走看看