内存监测工具
当我们遇到小程序特别卡顿或者是运行一段时间之后突然异常退出 崩溃等等这样的情况的时候,就可以考虑打开以下这两个调试面板
-
Performance面板里面的Memory方式来获取内存信息
-
Memory面板
-
Heap Snapshot
- 生成内存快照,会显示当前时刻页面上的js对象和对应的dom节点
- summary显示构造函数名称分组的对象,这对于跟踪 dom 泄漏特别有用
- comparison显示两个快照之间的差异,这个选择比较常用,可以用于对比查看内存变化,检查已释放内存的变化和参考计数,能够确认是否存在内存泄漏及其缘由。
- containment允许浏览堆内容
- Statistics 则显示了统计图
-
Allocation instrumenttation on time
-
这个选项会记录一段时间内的内存快照,并以时间轴的形式展现出来
-
查看一段时间内的内存变化,我们可以看到它这个地方会有蓝色的条出现,然后过一段时间它会变灰,变灰其实相当于是被GC然后回收了,一般它如果可以及时变灰的话,说明这一块它问题就不大 没有什么问题,如果说我们这个地方随着我们操作的进行它一直有蓝色条的不断出现,然后一直是蓝色的不变灰,我们这块这个程序可能会有问题,相关这个代码我们就需要重点的去关注一下
-
-
Allocation sampling
- 这个选项是JS Heap采样,多用于长时间的记录,一般使用较少
- 可以看出哪些函数影响了内存的分配,而且该函数所耗内存在内存分配中占比多少。点击跳转到函数定义的文件和位置。
-
js内存告警
当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。在 iOS 上,当微信客户端在一定时间间隔内连续收到系统内存告警时,会根据一定的策略,主动销毁小程序,并提示用户「运行内存不足,请重新打开该小程序」。
建议小程序在必要时使用 wx.onMemoryWarning 监听内存告警事件,进行必要的内存清理。例如:释放一些暂时不用的组件或 JS 对象。以下是yh-mini-sauron中对内存告警的监听