讲师中心 微信公众号
AI工具推荐 视频效率加速

JavaScript 垃圾回收对代码性能有什么影响

陌涛大大_6268

陌涛大大_6268

发布时间:2026-07-17 20:37:19

|

821人浏览过

|

来源于php中文网

原创

JavaScript垃圾回收虽自动但有性能代价,频繁触发会导致主线程暂停、卡顿掉帧;内存水位高、不当引用、全局变量及老生代对象堆积均加剧GC压力。

javascript 垃圾回收对代码性能有什么影响

JavaScript 垃圾回收(GC)本身是自动的,但它不是“免费”的——频繁或不当触发会直接拖慢代码执行,表现为卡顿、掉帧、响应延迟,尤其在动画、滚动、实时交互等场景中尤为明显。

GC 会暂停主线程,造成“停顿”

现代引擎(如 V8)虽采用增量标记、并行回收等优化,但 GC 仍需短暂暂停 JavaScript 执行来扫描内存。一次完整的老生代回收可能耗时几十毫秒,在 60fps 场景下,这相当于丢掉几帧。如果页面频繁分配大对象(如大量 JSON 解析、重复创建数组/对象),就会推高内存压力,触发更密集的 GC,形成恶性循环。

内存占用过高会加速 GC 频率

垃圾回收器主要根据内存使用水位触发:当堆内存接近阈值(V8 默认约 1.4GB,实际因设备而异),就会启动回收。以下写法容易快速抬升内存水位:

Java Maven Secondary Analysis
Java Maven Secondary Analysis

分析ZIP压缩包或GitLab仓库中的Java Maven项目,确定二次开发范围、类数量、模块分布及生产相关指标。

下载
  • 循环中反复 new Object()、[] 或 {} —— 每次都生成新对象,旧对象若未及时脱离引用链,就堆积成“垃圾”
  • 缓存未设上限或未清理(如用普通对象做 Map 缓存,key 是字符串但 value 是 DOM 节点)
  • 闭包意外保留大对象引用(例如事件处理函数里引用了整个数据列表)

不合理的引用关系阻碍回收

GC 只能回收“不可达”对象。只要一个对象还能从根(全局变量、调用栈、DOM 引用等)被访问到,它就不会被回收。常见阻碍回收的情况包括:

立即学习“Java免费学习笔记(深入)”;

  • 未清除的定时器:setInterval 返回的 timer ID 若长期持有回调函数,而该函数又引用了外部大对象,整个链路都无法释放
  • 未解绑的事件监听器:尤其是给 DOM 元素绑定匿名函数后未 removeEventListener,元素即使被移除,监听器仍存活
  • 循环引用 + 强引用:两个对象互相引用,且没有其他外部引用时,标记-清除可回收;但若其中一方被全局变量或闭包强持,就变成泄漏
  • 意外的全局变量:忘记用 let/const 声明,导致 data = {...} 直接挂到 window 上,永远可达

老生代回收代价远高于新生代

V8 将内存分为新生代(存放短期对象)和老生代(长期存活对象)。新生代 GC 快(Scavenge 算法),老生代 GC 慢(Mark-Sweep-Compact)。一旦对象在新生代经历多次 GC 后仍存活,就会晋升到老生代。这意味着:

  • 频繁创建又长期持有的对象(如单例服务、全局配置、缓存容器)会更快进入老生代
  • 一个本可快速回收的小对象,若被某个老生代对象无意引用(比如日志模块保存了某次请求的完整 payload),也会被迫滞留老生代,拉长下次 GC 时间

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

4706

2023.06.20

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

1169

2023.07.04

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

4644

2023.07.04

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

920

2023.09.01

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

1836

2023.09.04

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

3365

2023.09.04

如何启用JavaScript
如何启用JavaScript

JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

4353

2023.09.12

Js中Symbol类详解
Js中Symbol类详解

javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

2860

2023.09.20

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

20

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.1万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn