内存泄漏完全没有理由

时间:2018-07-02 11:45:31

标签: node.js memory-leaks socket.io v8

所以我有这个最简单的socket.io示例:

'use strict';

const server = require('http').createServer();
const io = require('socket.io')(server);

server.listen(8080, function () {

});

io.on("connection",function(socket){

    socket.on('disconnect', function (data) {

    });

    socket.on('sync', function(data) {

    });

    socket.on('enter', function(data) {

    });
});

我使用一些简单的Artillery.io脚本测试了此代码,该脚本仅模拟60秒内出现的60个用户,每个脚本发送600条无意义的“同步”消息。我创建了一些堆快照,并发现(数组)(已编译代码)(系统)构造函数一直在分配内存。实际上,我看到内存的分配和删除,但增量仍然始终为正:

enter image description here

(数组)构造函数中,我看到了一些'deoptimization_data''transitions'和其他可能的内部V8对象。当我查看“保持器”选项卡时,我看到此对象被不同的node.js和socket.io对象以某种方式引用。如果您自己运行此项目并使用Chrome DevTools拍摄一些堆快照,则可能会看到相同的内容。

我也有自己的应用程序(使用我未经过artillery.io测试的使用socket.io的简单游戏),当我在玩游戏时拍摄堆快照时,我注意到我没有与自己的对象有关的内存泄漏(感谢上帝) XD),但我仍然使用相同的(数组)(编译后的代码)(系统)构造函数来获得相同的连续内存分配。我又看到了这个'deoptimization_data''transitions'和其他V8对象。看起来像这样:

enter image description here

即使使用我可以创建的最简单的socket.io示例,这三个构造函数也正在慢慢消耗我的内存。它们是什么,我该如何处理以防止内存泄漏?

0 个答案:

没有答案