相关疑难解决方法(0)

为什么尝试写大型文件导致js堆耗尽内存

这段代码

const file = require("fs").createWriteStream("./test.dat");
for(var i = 0; i < 1e7; i++){

    file.write("a");
}
Run Code Online (Sandbox Code Playgroud)

运行约30秒后出现此错误消息

<--- Last few GCs --->

[47234:0x103001400]    27539 ms: Mark-sweep 1406.1 (1458.4) -> 1406.1 (1458.4) MB, 2641.4 / 0.0 ms  allocation failure GC in old space requested
[47234:0x103001400]    29526 ms: Mark-sweep 1406.1 (1458.4) -> 1406.1 (1438.9) MB, 1986.8 / 0.0 ms  last resort GC in old spacerequested
[47234:0x103001400]    32154 ms: Mark-sweep 1406.1 (1438.9) -> 1406.1 (1438.9) MB, 2628.3 / 0.0 ms  last resort GC in …
Run Code Online (Sandbox Code Playgroud)

v8 node.js node-streams

6
推荐指数
1
解决办法
1892
查看次数

节点:fs write()不在内部循环中写入.为什么不?

我想创建一个写入流并在我的数据进入时写入它.但是,我能够创建该文件,但没有写入任何内容.最终,该过程耗尽内存.

我发现问题是我在循环中调用write().

这是一个简单的例子:

'use strict'

var fs = require('fs');
var wstream = fs.createWriteStream('myOutput.txt');

for (var i = 0; i < 10000000000; i++) {
    wstream.write(i+'\n');
}

console.log('End!')
wstream.end();
Run Code Online (Sandbox Code Playgroud)

什么都没有写,甚至没有你好.但为什么?如何在循环内写入文件?

javascript fs node.js

5
推荐指数
2
解决办法
1828
查看次数

标签 统计

node.js ×2

fs ×1

javascript ×1

node-streams ×1

v8 ×1