導航:首頁 > 編程語言 > curlfc代碼

curlfc代碼

發布時間:2025-01-06 15:16:19

⑴ 怎麼自己檢查NodeJS的代碼是否存在內存泄漏

首先,我們來看一個簡單的內存泄漏
var http = require('http');

var server = http.createServer(function (req, res) {
for (var i=0; i<1000; i++) {
server.on('request', function leakyfunc() {});
}

res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
server.setMaxListeners(0);
console.log('Server running at http://127.0.0.1:1337/. Process PID: ', process.pid);

每一個請求我們增加了1000個導致泄漏的監聽器。如果我們在一個shell控制台中執行以下命令:
while true; do curl "http://127.0.0.1:1337/"; done

然後在另外一個shell控制台中查看我們的進程
top -pid

我們會看到node進程產生異常高的內存佔用,我們的node進程看起來失控了。那麼,當我們的node進程出現這種情況的時候,通常我們該怎樣診斷出問題的根源?
內存泄露的檢測
npm模塊 memwatch 是一個非常好的內存泄漏檢查工具,讓我們先將這個模塊安裝到我們的app中去,執行以下命令:
npm install --save memwatch

然後,在我們的代碼中,添加:
var memwatch = require('memwatch');
//memwatch.setup(); 原文有這行代碼,最新版本的memwatch已去掉這個方法(譯者注)

然後監聽 leak 事件
memwatch.on('leak', function(info) {
console.error('Memory leak detected: ', info);
});

這樣當我們執行我們的測試代碼,我們會看到下面的信息:
{
start: Fri Jan 02 2015 10:38:49 GMT+0000 (GMT),
end: Fri Jan 02 2015 10:38:50 GMT+0000 (GMT),
growth: 7620560,
reason: 'heap growth over 5 consecutive GCs (1s) - -2147483648 bytes/hr'
}

參考文獻https://w3ctech.com/topic/842#rd?sukey=0e1af5eeb690c5521ad1e164fb

閱讀全文

與curlfc代碼相關的資料

熱點內容
哪個理財app對接宜信 瀏覽:322
ps文件暫存檔已滿存不了 瀏覽:247
qq無法訪問個人文件夾win10打不開 瀏覽:464
aspmvc每個版本 瀏覽:440
ps批量裁剪pdf文件 瀏覽:438
dedecms後台沒有文件管理器 瀏覽:621
2021教育改革的文件有哪些 瀏覽:29
左左網路 瀏覽:827
文件夾亂放哪裡了 瀏覽:308
cad老出現dwl文件 瀏覽:789
u盤word文件打不開 瀏覽:974
44安卓版本miracast 瀏覽:755
公園網站模板 瀏覽:751
粉筆考試app寫作題在哪裡 瀏覽:512
超聲波定位模塊程序 瀏覽:770
蘋果logo尺寸 瀏覽:599
gs5顯示屏升級 瀏覽:213
excel只打開一個主程序 瀏覽:78
word2003左側目錄 瀏覽:715
蘋果的文件夾圖標 瀏覽:390

友情鏈接