前一天提升章节中有提到,在执行环境中,会创造函式与变数的记忆体空间,但若这些记忆体一直不释放,会造成记忆体满载或导致效能变差等问题,所以要适时地释放记忆体空间,所以下面来了解关於 JavaScript 记忆体的存放与释放
在执行函式时会产生执行环境,而执行环境是一层一层建立并堆叠执行,当运作完成则会一层一层离开,而当执行环境一层一层离开,同时也会释放记忆体空间,最後仅留下全域执行环境所占用的记忆体。
JavaScript 在大部分情况下采用 回收机制
来决定记忆体是否要回收,当一个物件,没有任何物件参考它时,则会被视为记忆体的垃圾,因而被释放,以下为课程中使用范例:
// 1.创造长字串来占用记忆体空间
function randomString(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
// 2.建立空阵列 data
var data = [];
// 3.建立函式 getData - 将 randomString 产生的长字串放入阵列 data
function getData() {
for (let i = 0; i < 1000; i++) {
data.push(randomString(5000))
}
}
// 4.运行函式 getData
getData();
// 5.显示阵列 data
console.log(data);
// 1.创造长字串来占用记忆体空间
function randomString(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
// 2.建立函式 getData
function getData() {
// 2-1.在函式内建立空阵列 data
var demoData = [];
// 2-2.将 randomString 产生的长字串放入阵列 data
for (var i = 0; i < 1000; i++) {
demoData.push(randomString(5000))
}
// 2-3.显示阵列 data
console.log(demoData);
// 注意:Chrome console 中的行为也会需要记忆体
}
// 3.运行函式 getData
getData();
先上传,撰写中ing
>>: Day9-TypeScript(TS)的介面型别(Interface)Part 2
这篇文章是从零开始到 MVP 系列的第二篇,想要看第一篇请往上点。 新创公司甘苦谈 每一间新创公司都...
昨天角色的 CRUD 功能都完成了,接着就是要把角色指派给使用者了,先建立一个 ViewModel ...
今天正式进入主题~ 在开始前我们必须先把环境建立起来,我知道很多人会使用webpack,但这边我是使...
好想被推播啊 身为一个负责的工程师,当系统有错误的时候,总是想收到即时推播讯息该怎麽做? 上一篇有提...
Input/Output | 键盘侠练起来 | 把梦想变成code的样子 🐄点此填写今日份随堂测验...