【web优化】web应用程序的内存优化

发布时间:2020-03-19 10:30:00

随着Web应用的日益复杂和NoDEJs的大规模生产,许多Web应用程序运行时间很长,JavaScript内存管理更为重要。

【web优化】web应用程序的内存优化

随着Web应用的日益复杂和NoDEJs的大规模生产,许多Web应用程序运行时间很长,JavaScript内存管理更为重要。

JavaScript具有自动垃圾收集机制。执行环境负责管理执行环境中代码使用的内存,并释放一些不再使用的变量占用的内存。正因为如此,大多数时候当我们在前端开发时,我们不太注意页面使用了多少内存,是否合理,也不需要优化。

在JavaScript基础中有许多与内存相关的重要知识点,如深度拷贝和浅拷贝、闭包、原型、引用数据类型和引用传递。

当然,关于JS的内存空间和内存相关知识,有很多专业文章都有详细的解释,这里就不赘述了。

在web应用程序开发中,应注意:

前端开发人员都知道,在本地范围内,当执行函数时,不需要存在本地变量。垃圾收集器很容易回收。当使用全局变量定义值时,垃圾收集器很难判断全局变量何时需要释放内存空间,因此它不会被回收或销毁。此变量将保留在堆内存中,直到页关闭。

另一种事故是;

我们可以通过在JS文件的开头添加“usestrict”来启用严格解析模式,以避免一些意外的全局变量。

如果必须有一个全局变量来存储大量数据,请确保在用完时为其分配一个空值。

delete运算符用于删除对象的属性;如果没有对该属性的引用,则最终将释放该属性。

但需要注意的是,在需要大量操作的函数中,尽量不要使用delete,这可能会导致浏览器的GC在不适当的时候出现。与其他语言一样,当GC停止响应其他操作时,JavaScript的GC策略无法避免其他操作,而JavaScript的GC为50毫秒或更长时间,这对普通应用程序很好。如果是针对经常操作的web应用程序或游戏的话,很难比较价格。

有时我们使用removechild来删除按钮,但是我们仍然将按钮的引用保存在node对象中,并且DOM元素仍在内存中,因此我们需要及时删除引用。

垃圾收集定期运行。如果分配了大量内存,或者创建了许多新实例,那么回收工作将非常困难。

尽量避免在频繁调用的方法中回收新对象,并花时间垃圾收集和处理这些对象。

在设计模式中,共享软件模式是为了减少对象的多次创建而设计的。***限度地重用对象,我们可以控制。

缓存在需求开发中起着重要的作用,但是很多时候我们会在内存中缓存大量的大数据,这就导致了我们的内存占用率很高。对于任何程序开发来说,内存都是浪费土地和***的。如果不是非常重要的资源,请不要直接将其放入内存,或开发过期机制来自动销毁过期的缓存。

一般来说,一个简单的递归调用不会导致堆栈溢出,但当它很复杂,每次都需要在堆栈中存储大量信息时,就会累积数千个这样的空间,很容易超过堆栈空间。

事实上,这与JS关系不大,但对Web应用程序的影响非常重要。有一次我遇到一个用户案例。由于本地数据写入时间长,部分报表日志未及时清除,用户浏览器中相应域名下的indexeddb高达12gb。当浏览器访问相应的域名时,还可以初始化索引Xeddb并读取本地存储的数据。面对如此庞大的数据,浏览器内存猛增,最终崩溃,避免了对indexeddb的过度依赖,在没有定期清理大脑的情况下编写数据。

这个共享主要总结了我们在web应用程序中可能遇到的一些情况和事情。

很多时候,只要我们多注意编码,就可以避免很多问题。


联系我们,谈您的需求

立即咨询