哪些问题会引起IE下内存增长明显,并且关闭iframe弹窗内存也降不下来?
1、页面创建iframe和切换同一iframe的src相比,切换同一iframe的src内存增长少一些,例子是:iframe链接的同一个html,html里面是将一个div循环一万次,再点击50次,内存增长大概相差15M;
2、IE中的内存释放和切换iframe快慢有关,切换的快如果内存没有完全释放,就会在原来的基础上增加,后面也不会释放,例子是:点击创建iframe内存增长30M,移除本来会释放10M,在还没有释放10M的时候又创建iframe了,那么内存不会继续释放就会增长,所以增长的基数就变大了;
3、在IE中打开一个iframe页面,如果存在全局变量,iframe移除后内存不能完全释放,例子是:如果iframe里面没有内容,内存几乎是没有增长的),用vue循环一万个div,点击50次内存增长35M左右,用artery6循环一个点击一次增长225M,点击第二次增长180M,因为artery6创建一个div就会创建全局变量,所以就算iframe移除也不会释放全局变量,F5刷新页面内存也不会降下来。
解决办法 1、离开页面时将html置空,将vue对象销毁,效果不是非常明显,可能是因为我写的例子没有绑定事件的原因,查了一下在removeChild和innerHTML=’’二者之间,尽量选择后者removeChild无法有效地释放dom节点;
2、离开页面时将页面关闭(window.close()),效果不明显,感觉该方法也只是将页面关闭没有做其他操作;
3、离开页面时将window对象里面的全局变量置为null,效果明显,释放了我们自己创建的一些全局变量。
总结:在大一点的项目中尽量不要使用iframe,如果使用,选择切换iframe的src而不是频繁的创建和移除iframe,如果用了插件或一些js库,需要去关注是否创建了大量的全局变量,在写代码的过程中,如果是使用完记得销毁。