全局变量太多会导致内存泄漏吗?怎么优化?
最近在做一个单页应用,发现页面用久了特别卡,打开任务管理器一看内存占用飙到1G多。我怀疑是因为项目里用了太多全局变量,比如window.globalData = {...}这种写法。
试过在组件卸载时手动设为 null,但好像没啥用。有没有更靠谱的清理方式?或者应该完全避免用全局变量?
window.userCache = new Map();
window.apiQueue = [];
window.currentTheme = 'dark';
// 后面很多地方直接读写这些变量
function updateTheme(theme) {
window.currentTheme = theme;
// ...其他操作
}
1. 减少全局变量的使用。能局部作用域解决的,就不用全局。
2. 使用模块化的方式管理状态,比如用 Vuex 或 Redux 来代替全局变量。
3. 确保在组件销毁时,清除所有对全局变量的引用。
比如你的代码可以改成这样:
然后在组件里通过 props 或 context 传递必要的数据和函数,而不是直接依赖全局变量。这样可以减少内存泄漏的风险。如果必须用全局变量,确保在不需要的时候清理干净,比如:
在组件的销毁生命周期里调用
clearGlobalVariables。这样可以更可靠地释放内存。性能上要注意的是,频繁创建和销毁对象也会消耗性能,所以尽量重用对象。