javascript – Node.js堆内存不足
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Node.js堆内存不足,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2491字,纯文字阅读大概需要4分钟。
内容图文
今天我运行我的脚本进行文件系统索引以刷新RAID文件索引,并在4小时后崩溃并出现以下错误:
[md5:] 241613/241627 97.5%
[md5:] 241614/241627 97.5%
[md5:] 241625/241627 98.1%
Creating missing list... (79570 files missing)
Creating new files list... (241627 new files)
<--- Last few GCs --->
11629672 ms: Mark-sweep 1174.6 (1426.5) -> 1172.4 (1418.3) MB, 659.9 / 0 ms [allocation failure] [GC in old space requested].
11630371 ms: Mark-sweep 1172.4 (1418.3) -> 1172.4 (1411.3) MB, 698.9 / 0 ms [allocation failure] [GC in old space requested].
11631105 ms: Mark-sweep 1172.4 (1411.3) -> 1172.4 (1389.3) MB, 733.5 / 0 ms [last resort gc].
11631778 ms: Mark-sweep 1172.4 (1389.3) -> 1172.4 (1368.3) MB, 673.6 / 0 ms [last resort gc].
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0x3d1d329c9e59 <JS Object>
1: SparseJoinWithSeparatorJS(aka SparseJoinWithSeparatorJS) [native array.js:~84] [pc=0x3629ef689ad0] (this=0x3d1d32904189 <undefined>,w=0x2b690ce91071 <JS Array[241627]>,L=241627,M=0x3d1d329b4a11 <JS Function ConvertToString (SharedFunctionInfo 0x3d1d3294ef79)>,N=0x7c953bf4d49 <String[4]\: ,\n >)
2: Join(aka Join) [native array.js:143] [pc=0x3629ef616696] (this=0x3d1d32904189 <undefin...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [/usr/bin/node]
2: 0xe2c5fc [/usr/bin/node]
3: v8::Utils::ReportApiFailure(char const*, char const*) [/usr/bin/node]
4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/usr/bin/node]
5: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/usr/bin/node]
6: v8::internal::Runtime_SparseJoinWithSeparator(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/bin/node]
7: 0x3629ef50961b
服务器配备16GB RAM和24GB SSD交换.我非常怀疑我的脚本超过36GB的内存.至少它不应该
脚本创建存储为具有文件元数据的对象数组的文件索引(修改日期,权限等,没有大数据)
这是完整的脚本代码:
http://pastebin.com/mjaD76c3
我已经在过去使用这个脚本遇到了奇怪的节点问题,这迫使我如此.将索引拆分成多个文件,因为当处理像String这样的大文件时,节点会出现故障.有没有办法用庞大的数据集改进nodejs内存管理?
解决方法:
如果我没记错的话,如果不手动增加,则V8中的内存使用量有一个严格的标准限制,大约为1.7 GB.
在我们的一个产品中,我们在部署脚本中遵循了此解决方案:
node --max-old-space-size=4096 yourFile.js
还有一个新的空间命令,但正如我在这里读到的:a-tour-of-v8-garbage-collection新空间仅收集新创建的短期数据,旧空间包含所有引用的数据结构,在您的情况下应该是最佳选择.
内容总结
以上是互联网集市为您收集整理的javascript – Node.js堆内存不足全部内容,希望文章能够帮你解决javascript – Node.js堆内存不足所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。