做过类似实验,使用 while(true) 一直发 ajax 请求,大概一秒5次,持续几十分钟。代码片段/块中全部都使用 var/let 限定作用域,理论上所有变量都会释放,不会占用内存。实测结果是在 Chrome 的某版本之前(可能是 54 ,也可能是 48 ,时间太久了记不清了),Chrome 的确有内存泄漏的问题,这是 Chrome 的 Bug ,靠 js 是没办法的。Chrome 已经修复了这个问题,现在已经很难复现了。 但是如果代码写得不好的话,本该释放的内存仍然会保存,这就是代码质量的事情了。很可惜目前只有 Basic 有 CLEAR 这种一口气清理所有内存的命令(而且完全没有实际意义)。 如果你担心请求过多导致内存占用太大的话,关注自身的代码质量,开启严格模式,所有代码块中使用 let 声明变量,减少使用全局变量,在每个循环结束后关注是否已经释放临时变量。
做过类似实验,使用 while(true) 一直发 ajax 请求,大概一秒5次,持续几十分钟。代码片段/块中全部都使用 var/let 限定作用域,理论上所有变量都会释放,不会占用内存。
实测结果是在 Chrome 的某版本之前(可能是 54 ,也可能是 48 ,时间太久了记不清了),Chrome 的确有内存泄漏的问题,这是 Chrome 的 Bug ,靠 js 是没办法的。
Chrome 已经修复了这个问题,现在已经很难复现了。
但是如果代码写得不好的话,本该释放的内存仍然会保存,这就是代码质量的事情了。很可惜目前只有 Basic 有 CLEAR 这种一口气清理所有内存的命令(而且完全没有实际意义)。
如果你担心请求过多导致内存占用太大的话,关注自身的代码质量,开启严格模式,所有代码块中使用 let 声明变量,减少使用全局变量,在每个循环结束后关注是否已经释放临时变量。