Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解决Nodejs中的内存泄漏问题?_Javascript_Node.js_Memory Leaks_Heap Dump - Fatal编程技术网

Javascript 如何解决Nodejs中的内存泄漏问题?

Javascript 如何解决Nodejs中的内存泄漏问题?,javascript,node.js,memory-leaks,heap-dump,Javascript,Node.js,Memory Leaks,Heap Dump,我目前正在使用nodejs发送推送消息。 我向大约10000人发送了推送消息,但我的代码有问题。 下面的屏幕截图中显示了发送推送消息的代码。 pushSend方法被调用10000到20000次。 问题是发送推送消息后内存泄漏。 我分析了一个堆转储来解决这个问题。同时,我发现了以下结果。但现在我不知道为什么会发生这个问题。 您是否为执行此代码的20000次中的每一次创建一个新FCM对象?您确定服务器已启动且可访问吗?因为此FCM代码具有在服务器无法立即访问时执行指数备份自动重试的代码,如果您在服

我目前正在使用nodejs发送推送消息。 我向大约10000人发送了推送消息,但我的代码有问题。 下面的屏幕截图中显示了发送推送消息的代码。

pushSend方法被调用10000到20000次。 问题是发送推送消息后内存泄漏。 我分析了一个堆转储来解决这个问题。同时,我发现了以下结果。但现在我不知道为什么会发生这个问题。

您是否为执行此代码的20000次中的每一次创建一个新FCM对象?您确定服务器已启动且可访问吗?因为此FCM代码具有在服务器无法立即访问时执行指数备份自动重试的代码,如果您在服务器无法访问时反复调用它,则会同时保留大量请求?嗯..它不会创建新的FCM对象每一次。我用一个fcm对象调用了20000次。好吧,你展示的代码中没有任何东西会自己泄漏。因此,如果确实是这段代码导致了泄漏,那么它必须位于
fcm.send()
的内部。而且,在模块的代码中,如果发送操作进入重试循环,则我发现的唯一潜在泄漏是,在重试最终完成之前,这将在内存中保留大量状态。我同意你的看法。当我完全分析heapdump时,fcm.send()中的方法中存在内存泄漏。现在我解决了这个问题。与使用单个FCM对象多次调用send()不同,修复了每次创建新FCM对象时调用send方法时出现的内存泄漏问题。(new FCM().send(push_data,(err,response)=>{}…),但我仍然不知道为什么使用单个FCM对象多次调用send方法会导致该问题。谢谢你的回复。这个方法到底泄漏了什么?