既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
2)内存泄漏
程序在向系统申请分配内存空间后(new),在使用完毕后未释放。结果导致一直占据该内存单元,我们和程序都无法再使用该内存单元,直到程序结束,这是内存泄露。
3)内存溢出:程序向系统申请的内存空间超出了系统能给的。比如内存只能分配一个int类型,我却要塞给他一个long类型,系统就出现oom。
测试方法
01
通过命令获取
连接上手机后通过“dumpsys meminfo 包名/pid”命令获取(实例)
Pss Total: 实际使用的物理内存
private dirty: 私有驻留内存
Heap Size: 占用总内存(Heap 堆)(扩展:进程内存空间是虚拟 内存,区分于物理内存,进程无法直接操作物理内存RAM。必要时,操作系统对其进行映射,使进程能应用到物理内存)
Heap Alloc: 分配内存
Heap Free: 空闲内存
查询某一个进程所占用的总内存通过:dumpsys meminfo|find
“Packagename”(适用于windows)我在对比测试实践中即用上面的第2种方法获取内存值,附一个直接获取并计算内存结果的小脚本
02
LeakCanary的使用
LeakCanary是一个高效检测内存泄露的工具,需要做的配置如下,在 build.gradle中加入引用,不同的编译使用不同的引用。
dependencies{debugCompile’com.squareup.leakcanary:leakcanary-android:1.3’releaseCompile’com.squareup.leakcanary:leakcanary-android-no-op:1.3’ }
在 Application 中:
public class ExampleApplication extends Application{@Override public void onCreate() { super.onCreate(); LeakCanary.install(this); } }
这样,就万事俱备了!
若有内存泄漏,会有toast提示正在dump数据,打开leak app就可以看到一条具体的内测泄漏信息(这里在toast提示之后会有一定的延迟,过一会儿才会在leak app显示)
内存泄漏详细页如下图所示:
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**