導航:首頁 > 編程語言 > 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代碼相關的資料

熱點內容
樂享群是什麼網站 瀏覽:255
二手蘋果皮 瀏覽:599
藍牙可以連接網路連接不了怎麼辦 瀏覽:789
上汽同行app二維碼 瀏覽:745
刪除文件需要許可權怎麼辦 瀏覽:636
正在復制不顯示文件 瀏覽:589
免費的網路教育有哪些 瀏覽:730
小學編程是哪些內容 瀏覽:883
編程中的大於小於怎麼用 瀏覽:543
一塵網app怎麼會閃退 瀏覽:16
vb計算三角形面積代碼 瀏覽:966
excel文件中扣章 瀏覽:58
java驗證簽名返回101 瀏覽:498
編程軟體哪個和sp1兼容 瀏覽:848
英朗gt空氣流量計怎麼看數據 瀏覽:916
60寵物對戰升級小號 瀏覽:58
數控編程速率怎麼是6000 瀏覽:694
nsa方程式組工具 瀏覽:780
分期買家電哪個網站好 瀏覽:858
QQjava諾基亞s60 瀏覽:17

友情鏈接