Pvv*_*sad 7 garbage-collection node.js
我正在使用解密来解密"MySql"数据.我得到了以下问题:
<---最后几个GC --->
31681 ms:标记扫描654.1(666.5) - > 492.5(509.8)MB,267.5/0.0 ms [分配失败] [请求旧空间中的GC].
31839 ms:标记扫描492.5(509.8) - > 492.2(506.8)MB,157.5/0.0 ms [分配失败] [请求旧空间中的GC].
31985 ms:Mark-sweep 492.2(506.8) - > 492.2(497.8)MB,146.2/0.0 ms [last resort gc].32122 ms:标记扫描492.2(497.8) - > 492.2(497.8)MB,136.8/0.0 ms [最后的手段gc].<--- JS stacktrace --->
有什么关系以及如何解决它,
提前致谢
正确的解决方案
您的 Node.js 应用程序中的某些内容使用了太多内存。这通常是不好的迹象,需要长期调查。要找出执行此操作的确切代码片段 - 您可能需要查看 node.js 分析技术。关于此的一些文章https://nodejs.org/en/docs/guides/simple-profiling/
快速解决方案
在某些情况下,我们想要快速解决问题。对于这种情况,正如 Cryptic Pug 正确指出的那样 - 我们可以增加 JS 内存分配限制。如何执行此操作的选项很少(根据您的需要)
node直接
传递参数node --max_old_space_size=4096 app.js
Run Code Online (Sandbox Code Playgroud)
NODE_OPTIONS=--max_old_space_size=4096
node app.js
Run Code Online (Sandbox Code Playgroud)
.npmrc文件。将以下内容放入.npmrc本地或全局文件
中node-options=--max_old_space_size=4096
Run Code Online (Sandbox Code Playgroud)
并运行你的脚本
node-options=--max_old_space_size=4096
Run Code Online (Sandbox Code Playgroud)
通过对节点使用以下参数,为脚本分配更多内存: - max_old_space_size = x
例:
node --max_old_space_size=8000 yourscript.js
Run Code Online (Sandbox Code Playgroud)
这将为您的脚本分配大约8GB.最终这仍然不够,你应该用较小的块解密你的SQL并使用你的物理驱动器而不是RAM内存.
希望这可以帮助!