【发布时间】:2016-06-28 20:30:43
【问题描述】:
for (i = 0; i < 3e11; i++) {
process.stdout.write('aaaabbbbccccdddd')
process.stdout.write('\n')
}
或者这个代码:
for (i = 0; i < 3e11; i++) {
console.log('aaaabbbbccccdddd')
}
只需在这样的终端中运行:node test.js
大约一分钟后产生这个:
<--- JS stacktrace --->
Cannot get stack trace in GC.
FATAL ERROR: MarkCompactCollector: semi-space copy, fallback in old gen Allocation failed - JavaScript heap out of memory
Aborted (core dumped)
它在哪里吃掉内存?
$ node -v
v6.1.0
【问题讨论】:
-
如果一个进程正在写入标准输出,但没有人在听,它真的会占用内存吗?换句话说:这段代码在什么上下文中运行?
-
@CodeCaster 这只是在终端中运行。
-
对我来说效果很好(持续 15 秒并计数)。
-
你的节点版本是多少?
-
是的,我也崩溃了。我认为这是一个有点操作系统级别的问题,可能输出进入缓冲区并保持在缓冲区中的速度比写入终端的速度要快,直到 OOM。
标签: node.js operating-system out-of-memory stdout