程序里有很多地方需要使用闭包,刚开始写的时候也没太注意内存,现在程序写完了,发现如果反复运行后内存会一直增加,有些东西并没有被cg回收,具体如下
程序运行中的内存使用情况
程序一个周期运行完毕后的情况
可以看到只回收的部分,但部分还在内存中(比如Component一直是 * 1000)...
应为现在程序写完了,而且代码又多,代码里实在是很难找到 是哪里的引用导致无法回收,大家有没有什么好的办法或工具?
程序里有很多地方需要使用闭包,刚开始写的时候也没太注意内存,现在程序写完了,发现如果反复运行后内存会一直增加,有些东西并没有被cg回收,具体如下
程序运行中的内存使用情况
程序一个周期运行完毕后的情况
可以看到只回收的部分,但部分还在内存中(比如Component一直是 * 1000)...
应为现在程序写完了,而且代码又多,代码里实在是很难找到 是哪里的引用导致无法回收,大家有没有什么好的办法或工具?
写代码的时候需要注意,数据量大的对象不要被多个变量引用,用完就设置为null,如果有数据量大的对象需要被多次使用,特别是在单页面应用中,就把该对象统一放到window的一个自定义属性下面,方便管理。
之前基于vue的单页面应用中使用gis,不得不得使用jquery,由于历史遗留问题,gis在封装时部分数据量特别大的对象被多个变量引用,导致无法通过设置为null将内存释放掉,最后通过keep-alive(仅加载一次)和iframe+PostMessage(刷新时自动释放内存)才解决了问题
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
比如写 vue 或 react 这种大型框架,可能稍有不慎就会出现内存泄漏,很想知道像尤大神这种人在开发的时候会用到哪些工具的,都是全凭经验 + 谷歌 devtools吗??