我使用解密来解密“MySql”数据。我得到了以下问题:
< ---最后几个GC --->
31681 ms:标记扫描654.1(666.5) - > 492.5(509.8)MB,267.5 / 0.0 ms [分配失败] [请求旧空间的GC]。
31839ms:Mark-sweep 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 [不得已的gc]。 32122 ms:标记扫描 492.2(497.8) - > 492.2(497.8)MB,136.8 / 0.0 ms [最后的手段gc]。 < --- JS stacktrace --->
它是什么以及如何解决它,
提前致谢
答案 0 :(得分:8)
通过使用节点的以下参数为脚本分配更多内存: - max_old_space_size = x
示例:
node --max_old_space_size=8000 yourscript.js
这将为您的脚本分配大约8GB。最终这仍然不够,您应该以较小的块解密SQL并使用物理驱动器而不是RAM内存。
希望这有帮助!
答案 1 :(得分:2)
正确的解决方案
您的node.js应用程序使用了过多的内存。这通常是一个不好的迹象,需要长期调查。要找出执行此操作的确切代码,您可能需要查看node.js分析技术。关于此https://nodejs.org/en/docs/guides/simple-profiling/
的一些文章快速解决方案
在某些情况下,我们需要快速的解决方法。对于这种情况,正如Cryptic Pug正确指出的那样-我们可以增加JS内存分配限制。这样做的方法很少(根据您的需要)
node
node --max_old_space_size=4096 app.js
NODE_OPTIONS=--max_old_space_size=4096
node app.js
.npmrc
文件。将以下内容放入.npmrc
本地或全局文件中
node-options=--max_old_space_size=4096
并运行您的脚本
node app.js
答案 2 :(得分:0)
我遇到了这个问题,但是通过为我的项目移除全局安装的电子并在本地安装电子,该错误消失了。