产品形态
一个看书的应用,可以翻页。
场景
为了更好的缓存ajax数据,做了比较多的数据缓存,测试发现,使用页面一会过后页面会变卡,在微信浏览器环境下,直接闪退。第一反应是请求太慢,去掉花费时间较长的请求后,依然变卡。所以就做了时间断点测试。
过程分析
代码如下:
一共有4个时间点:
- 这整块代码的执行时间:getPageContent
- 获取源数据的执行时间:getChapterJSON
- 数组查找方法:chapterJSONfind
- 对象序列化:JSONstringify
然后执行翻页操作所得的时间如下:
一眼可以看出,JSONstringify的时间越来越长,导致第十次交互时,直接页面闪退。
打印出这个对象后,发现了循环引用,导致内存泄漏
总结
这些操作都是在微信环境下测试的,在谷歌浏览器上,没有这种现象发生,想必是做过优化,微信的x5内核则会内存泄漏。下次在序列化对象之前务必检查啊~~