浏览器的内存回收机制对比

chrome浏览器内存回收机制>firefox浏览器(可借助firemin来对内存进行回收,55版本的firefox内存管理相对于75的要好,版本越高,越占用内存)>safari浏览器(本身就很吃内存)

 

JS使用内存过多导致崩溃
在上图中可以看到多个内存:内存、GPU内存、Javascript内存。其中Javascript内存是JS对象占用的内存,垃圾回收会影响这部分内存。Javascript代码和垃圾回收运行在同一个线程的环境,当垃圾回收的时候,js代码不会执行。如果js对象过多,(占用内存过多),垃圾回收的过程也会变得漫长。所以Chrome简单粗暴的限制了Javascript内存的占用,在x64下最大~1.4G。解决这样的问题需要优化数据结构或者增加数据动态管理的机制。

JS代码运行Timeout
如果JS运行时间过长,超出一定的时间,浏览器就弹个对话框,让用户选择是否结束。相同的代码在chrome中没有问题,而在firefox中就可能无响应。

解决方法就是把耗时的算法设计成分部执行,结合setTimeout或者requestAnimationFrame使用。

你可能感兴趣的:(JS)