亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

更多QQ空间微信QQ好友腾讯朋友复制链接
您的位置:首頁/技術文章
文章詳情頁

node.js - node垃圾回收、內存泄漏相關問題

【字号: 作者:豬豬瀏覽:95日期:2024-07-16 16:35:19

問題描述

最近剛開始研究垃圾回收,在試著回答餓了么大前端里的node內存釋放相關的問題時,遇到了一些疑問:

let arr = [];while(true) arr.push(1);

無限增加的數組,這肯定是會爆掉內存的。

let arr = [];while(true) arr.push();

這個我覺得只是一直使用 arr ,導致 arr 不能被釋放吧?

let arr = [];while(true) arr.push(new Buffer(1000));

這個是因為 Buffer 的大小小于8k,會先檢查內存池是否已滿,所以應該不會爆掉內存?

var theThing = null var replaceThing = function () { var originalThing = theThing var unused = function () { if (originalThing) console.log('hi') } theThing = { longStr: new Array(1000000).join(’*’), someMethod: function () { console.log(someMessage) } };};setInterval(replaceThing, 1000)

這個是因為 unused 對 originalThing 進行了引用,所以每一個 unused 都形成了一個 originalThing 的作用域 replaceThing 的閉包,這個閉包不會被回收掉,所以會在內存中一直累積?

因為自己不是很確定,所以麻煩懂的小伙伴回答一下,謝謝!

問題解答

回答1:

new Buffer估計不是簡單爆內存的問題,Buffer是分配在V8堆外的,所以實際上比第一個的問題還要嚴重,我剛才就直接死機了。

第二個應該說的是由于數組大小不會增長,所以不會爆內存。

第三個原文中就有提及原因

比如上述情況中 unused 的函數中持有了 originalThing 的引用, 使得每次舊的對象不會釋放從而導致內存泄漏

如果還是不理解可以看看原發現者的文章,里面講解的很詳細。

回答2:

死循環的代碼到哪都會爆內存,特別是js這種單線程語言,直接阻塞卡死。 Buffer類型我沒用過,會不會檢查內存池這個無法確定,但卡死了檢不檢查內存意義也不大。

最后一個我同意你的說法,每次循環都新建一個對象,theThing的引用地址不斷在變化,正常情況下舊的引用對象就應該被垃圾回收了,但由于unused引用了舊的對象originalThing,originalThing又一個私有變量,所以舊的對象無法被垃圾回收,就造成了內存泄露。

有沒有下面這段代碼的區別,環境chrome,運行30s。 第一幅圖是沒有這段代碼的結果,內存在15M浮動。第二幅圖是有這段代碼的結果,內存不斷增長。

function unused() { if (originalThing) console.log('hi');}

node.js - node垃圾回收、內存泄漏相關問題

node.js - node垃圾回收、內存泄漏相關問題

回答3:

我也不是很確定,不過可以用memwatch-next的包看看

相關文章:
主站蜘蛛池模板: 欧美日韩在线视频专区免费 | 高清国产一级毛片国语 | 日本xxwwwxxxx18| 国产破处在线 | 亚洲三级小视频 | 成人精品视频一区二区在线 | 亚洲人6666成人观看 | 久久国产欧美 | 日韩视频第一页 | 亚洲综合图库 | 亚洲理论在线观看 | 97精品国产91久久久久久久 | 国产青青久久 | 国产网站在线 | 国产区第一页 | 免费观看黄色a一级视频播放 | 五月婷婷网 | 日本亚洲国产 | 久久婷婷成人综合色 | 久草免费资源在线 | 综合7799亚洲伊人爱爱网 | 免费亚洲网站 | 欧美亚洲另类视频 | 黄色片免费在线播放 | 窝窝午夜精品一区二区 | 精品午夜久久影视 | 国产亚洲欧美在线人成aaaa | 做a的视频免费 | 国产国产人在线成免费视频69 | 国产高清精品入口麻豆 | 99久久伊人 | 九九免费高清在线观看视频 | 看片免费黄 | 黄色小视频免费在线观看 | 毛片一级片 | 日韩日b视频 | 国产啪精品 | 在线观看www日本免费网站 | 亚洲精品一区二区三区在线播放 | 亚洲免费网 | 91大神成人偷拍在线观看 |