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

熱點內容
js介面安全域名作用 瀏覽:634
java字元為空 瀏覽:355
revit族文件在哪裡找 瀏覽:825
韓劇巧克力哪個app 瀏覽:488
extjs5grid在線演示 瀏覽:53
資料庫索引mysql 瀏覽:480
恢復桌面數據用什麼軟體 瀏覽:478
juicessh使用教程 瀏覽:753
蘋果系統還原密碼錯誤 瀏覽:211
程序員用104鍵的鍵盤推薦 瀏覽:528
小米手機接收的藍牙文件去哪裡找 瀏覽:561
點對點網路共享 瀏覽:245
win7一鍵配置java環境 瀏覽:711
adobe軟體為文件夾加密 瀏覽:853
網路電視樂視 瀏覽:388
互聯網路信息中心net 瀏覽:909
extjs分頁事件 瀏覽:951
如何入駐頭條數據 瀏覽:87
什麼叫系統已無數據 瀏覽:605
城市房價數據來自哪個平台 瀏覽:331

友情鏈接