You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Array.slice(0,-1)移除数组末尾元素是否会引发内存泄漏

问题结论

实际运行符合情况1的描述,不存在内存泄漏问题。

核心逻辑解释
  • Array.prototype.slice() 执行时会创建完全独立的新数组实例,而非共享原数组的底层存储再限制访问长度。调用arr.slice(0, -1)时,会主动把原数组索引0到3的元素拷贝到新数组中,新数组自身的长度就是4,和原数组没有存储层面的关联。
  • 当foo函数执行完成后,局部变量arr的作用域销毁,没有其他引用指向原数组[0,1,2,3,4],整个原数组都会被垃圾回收器完整清理,不会出现原数组残留、元素4无法回收的问题。
浅拷贝特性说明

你提到的slice属于浅拷贝,指的是如果原数组的元素是引用类型(对象、数组等),拷贝时只会复制引用地址,新旧数组的元素会指向同一个内存对象,但这一特性不影响数组实例本身的独立性,原数组依然可以正常被回收。

内容的提问来源于stack exchange,提问作者Daniel Cullen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:54:03