第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數(shù)組移位時的Javascript內(nèi)存優(yōu)化

數(shù)組移位時的Javascript內(nèi)存優(yōu)化

猛跑小豬 2022-07-15 09:39:25
我的項目中有更改歷史。History 是一個由對象組成的數(shù)組,其中每個對象有 2 個數(shù)組。所以當(dāng)我添加歷史快照時,它看起來像這樣(但實際上我沒有添加空數(shù)組):history.push({   //new history moment      firstP:  [],    secondP: [], })例如數(shù)組 firstP 由如下對象組成:{    color: "red",    move: 1,    ... and some other fields (max 14 fields if it matters)}firstP 和 secondP 通常擁有數(shù)千個對象。所以每個歷史快照對于內(nèi)存來說都是相當(dāng)沉重的。所以我添加了限制const limitOfSteps = 50;現(xiàn)在每次推送后,我都會檢查歷史長度是否不大于 50。如果是,我會執(zhí)行 history.shift();但是我在記憶中看到的是,即使在移動(刪除數(shù)組中的第一個元素)時,使用的內(nèi)存也在增加。當(dāng)用戶在 react 應(yīng)用程序中執(zhí)行某些操作時,該元素會添加到歷史記錄中,因此他可以根據(jù)需要進行盡可能多的更改。我知道有垃圾收集器,但它如何與數(shù)組一起工作?移動數(shù)組應(yīng)該意味著元素已經(jīng)消失(并且也從內(nèi)存中消失了?)但它并沒有立即消失(如果用戶將快速進行更改,那么整個應(yīng)用程序?qū)?nèi)存不足)。將刪除的元素(就在移動數(shù)組之前)更改為 undefined 或 null 會使內(nèi)存更快地釋放嗎?主要目標(biāo)是使用更少的內(nèi)存......有人知道怎么做嗎?編輯:數(shù)組可能會移動一千次。Edit2(也許我的問題全錯了?也許我應(yīng)該問一下整個數(shù)組何時被刪除?)這一切都在狀態(tài)下的反應(yīng)應(yīng)用程序中。切片歷史(進行復(fù)制)可能會消耗更多內(nèi)存,但這是不可避免的,因為狀態(tài)是不可變的。我的更新方法如下所示:updateHistory = (newElement) => {    const history = this.state.history.slice();    history.push(newElement);    if(history.length - 1 > 50) history.shift();    this.setState({history: history});}這有什么意義嗎?
查看完整描述

2 回答

?
開滿天機

TA貢獻1786條經(jīng)驗 獲得超13個贊

垃圾收集是在 JavaScript 中自動完成的,您不必自己管理。這也是為什么您在從數(shù)組中移動項目時看到內(nèi)存增加的原因,盡管您將大小限制為 50。

您不能強制或阻止垃圾收集,但是當(dāng)它運行時,它會在不引用它的情況下刪除值。


查看完整回答
反對 回復(fù) 2022-07-15
?
溫溫醬

TA貢獻1752條經(jīng)驗 獲得超4個贊

一個對象被稱為“垃圾”,如果有零個指向它的引用,則稱為可收集的。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management


與該方法相關(guān)聯(lián),您可以嘗試刪除變量引用。例子:


var a = 1;

var array = [a, 2, 3, 4];

a = null;

array.shift();


// or


var array = [1, 2, 3, 4];

array[0] = null;

array.shift();


查看完整回答
反對 回復(fù) 2022-07-15
  • 2 回答
  • 0 關(guān)注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號