防抖和节流
相同点:
防抖和节流本质上是优化高频率执行代码的手段
防抖和节流都可以通过使用setTimeout实现,目的都是,降低回调执行频率,节省计算资源。
不同点:
防抖是在一段时间后再执行操作,若在一段时间内被重复触发,则重新计时。
节流是在一段时间内只运行一次,若在一段时间内重复触发,只有一次生效。
函数防抖,在一段连续操作结束后,处理回调,利用clearTimeout和 setTimeout实现。
函数节流,在一段连续操作中,每一段时间只执行一次,频率较高的事件中使用来提高性能;
函数防抖关注一定时间连续触发的事件,只在最后执行一次,而函数节流一段时间内只执行一次。
回流和重绘
相同点:
回流和重绘都是在改变dom元素的时候触发的
不同点:
回流:
当增加或删除dom节点,或者给元素修改宽高时,会改变页面布局,
那么就会重新构造dom树然后再次进行渲染,这就是回流
重绘:
简单来说就是重新绘画,当给一个元素更换颜色、更换背景,
虽然不会影响页面布局,但是颜色或背 景变了,就会重新渲染页面,这就是重绘。
重绘不会引起dom结构和页面布局的变化,只是样式的变化,有重绘不一定有回流。
回流则是会引起dom结构和页面布局的变化,有回流就一定有重绘。
内存泄漏和溢出
内存溢出 (OutOfMemory):
它是指程序在申请内存时,没有足够的内存空间供其使用,抛出OutOfMemory异常。
比如申请了一个8MB空间,但是当前内存可用空间只有5MB,那么就是内存溢出;
即:OutOfMemoryError,是指没有空闲内存,垃圾收集器回收后也不能提供更多的内存空间;
内存泄漏 (Memory Leak):
它是指程序运行后,没有释放所占用的内存空间(程序中有引用没有释放,不能被GC回收),
一次内存泄漏可能会有很大的影响,但长时间的内存泄漏,堆积到一定程度就会产生内存溢出
二者关系:
内存泄露最终会导致内存溢出,由于系统中的内存是有限的,如果过度占用资源而不及时释放,
最后会导致内存不足,从而无法给所需要存储的数据提供足够的内存,从而导致内存溢出。
导致内存溢出也可能是由于在给数据分配大小时没有根据实际要求分配,最后导致分配的内存
无法满足数据的需求,从而导致内存溢出。
区别:
内存泄露是由于GC无法及时或者无法识别可以回收的数据进行及时的回收,导致内存的浪费;
内存溢出是由于数据所需要的内存无法得到满足,导致数据无法正常存储到内存中。
内存泄露的多次表现就是会导致内存溢出。
以上就是本节的内容,希望能帮到你,以后也会持续更新更多内容,想了解更多看我主页,谢谢观看!