我刚刚了解了JS中的闭包,并很高兴能在我的项目中尝试它。我写了以下代码作为时间检查缓存是否过期。}); return;else // get new data from db and save it to local file data.txt
我之所以认为代码中的闭包是罪魁祸首,是因为堆转储比较显示了大量由not collected创建的闭包,这导致pm2显示内存使用量增加。下面是heapdump的快
根据我目前对VM及其行为的假设,我认为每次命中闭包定义时都会分配和编译闭包;与在闭包外声明的函数相反,闭包只被分配和编译一次(因为它们放置在某个地方,所以定义只命中一次)。这个假设正确吗?因此,如果我在socket.on('data', function (data) {...})中有一个闭包,那么每当套接字接收到数据时,V8都会分配新的内存(可能还会重新编译)闭</em