JavaScript 的内存管理

简介: 本文你将了解:• js 的内存分配• 垃圾回收机制• 垃圾回收策略• V8 的内存管理• V8 的回收策略

网络异常,图片无法展示
|


前言


任何程序的运行都需要分配内存,如我们运行一个网页。如果分配的一些内存不能及时的得到释放,就称为内存泄露,当出现大量的内存泄露时,就是内存溢出,内存溢出简单来说就是我们使用的内存大于系统能够提供的内存空间,内存溢出的的直接现象就是页面的卡顿,更严重的就是页面的崩溃。导致用户体验差,用户流失。


本文你将了解:

  • js 的内存分配
  • 垃圾回收机制
  • 垃圾回收策略
  • V8 的内存管理
  • V8 的回收策略


内存的生命周期


不管什么程序语言,内存生命周期基本是一致的:

网络异常,图片无法展示
|


JavaScript 的内存分配



网络异常,图片无法展示
|

JS的数据类型分为两种,一种是原始数据类型,包括string、number、boolean、null、undefined、sybmol、bigint 。还有一种是引用数据类型Object。数据类型不同在内存存储方式也是不一样的,内存分为三种,栈内存、堆内存和代码空间。

网络异常,图片无法展示
|

栈内存 是一种后进先出的结构,例如一个水桶,水桶的底部就相当于栈底,水桶的进水处就相当于栈顶,水桶的水由栈顶进入,栈顶 出去,由于原始数据类型是大小固定的,由内存自动分配内存所以他存在于栈内存中。我们创建一个变量,例如var a = 10; 在内存中是先将10放入内存的,在将a放入内存,然后把a和10关联起来。而引用数据类型,大小不固定,存储在堆中,例如 一个对象var obj = {},首先在堆中会开辟出一块内存出来,存储对象的值,然后生成一个十六进制的地址码,最后在栈 中放入这个地址码,并放入obj,使地址码和obj关联起来。


垃圾回收机制


找出那些不在继续使用的变量,然后回收他们所占用的内存,垃圾回收器会隔一段时间进行一次垃圾回收,不同的引擎这个回收时间不一致。js使用垃圾回收来自动管理内存,但是垃圾回收是一把双刃剑。

网络异常,图片无法展示
|


垃圾收集策略



网络异常,图片无法展示
|

V8 的内存管理


首先我们要知道 V8 是有内存限制的,这里你可能会奇怪为什么 V8 会有内存的限制了?

网络异常,图片无法展示
|

哪 V8 的回收测试又是怎么样的了。其实 V8 采用分代回收的策略,将内存分为新生代老生代。V8对新生代和老生代采用不同的垃圾回收算法来提升效率。

网络异常,图片无法展示
|


总结


内存管理存储比较抽象,但是和我们日常的研发息息相关,了解内存的管理,对日常处理内存问题也会更加得心应手一些。希望对你有帮助。

如果你觉得写得不错,帮忙点个赞吧。


参考



目录
相关文章
|
1月前
|
Web App开发 监控 JavaScript
监控和分析 JavaScript 内存使用情况
【10月更文挑战第30天】通过使用上述的浏览器开发者工具、性能分析工具和内存泄漏检测工具,可以有效地监控和分析JavaScript内存使用情况,及时发现和解决内存泄漏、过度内存消耗等问题,从而提高JavaScript应用程序的性能和稳定性。在实际开发中,可以根据具体的需求和场景选择合适的工具和方法来进行内存监控和分析。
|
1月前
|
JavaScript 前端开发 Java
避免 JavaScript 中的内存泄漏
【10月更文挑战第30天】避免JavaScript中的内存泄漏问题需要开发者对变量引用、事件监听器管理、DOM元素操作以及异步操作等方面有深入的理解和注意。通过遵循良好的编程实践和及时清理不再使用的资源,可以有效地减少内存泄漏的风险,提高JavaScript应用程序的性能和稳定性。
|
1月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
181 77
|
1月前
|
监控 JavaScript
选择适合自己的Node.js内存监控工具
选择合适的内存监控工具是优化 Node.js 应用内存使用的重要一步,它可以帮助你更好地了解内存状况,及时发现问题并采取措施,提高应用的性能和稳定性。
117 76
|
1月前
|
监控 JavaScript 数据库连接
解读Node.js内存监控工具生成的报告
需要注意的是,不同的内存监控工具可能会有不同的报告格式和内容,具体的解读方法可能会有所差异。因此,在使用具体工具时,还需要参考其相关的文档和说明,以更好地理解和利用报告中的信息。通过深入解读内存监控报告,我们可以不断优化 Node.js 应用的内存使用,提高其性能和稳定性。
103 74
|
1月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
124 62
|
1月前
|
监控 JavaScript Java
Node.js中内存泄漏的检测方法
检测内存泄漏需要综合运用多种方法,并结合实际的应用场景和代码特点进行分析。及时发现和解决内存泄漏问题,可以提高应用的稳定性和性能,避免潜在的风险和故障。同时,不断学习和掌握内存管理的知识,也是有效预防内存泄漏的重要途径。
134 52
|
29天前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
70 31
|
1月前
|
缓存 监控 JavaScript
避免在Node.js中出现内存泄漏
总之,避免内存泄漏需要在开发过程中保持谨慎和细心,遵循最佳实践,不断优化和改进代码。同时,定期进行内存管理的检查和维护也是非常重要的。通过采取这些措施,可以有效地降低 Node.js 应用中出现内存泄漏的风险,确保应用的稳定和性能。
|
1月前
|
监控 JavaScript 前端开发
如何检测和解决 JavaScript 中内存泄漏问题
【10月更文挑战第25天】解决内存泄漏问题需要对代码有深入的理解和细致的排查。同时,不断优化和改进代码的结构和逻辑也是预防内存泄漏的重要措施。
62 6