当前位置: 首页 > 知识库问答 >
问题:

NodeJS-致命错误:CALL_AND_RETRY_LAST分配失败

孔建柏
2023-03-14

我尝试了这个解决方案:致命错误:CALL_AND_RETRY_LAST分配失败-进程内存不足

但不管用。

还尝试了其他:Devextreme:致命错误:CALL_AND_RETRY_LAST分配失败-JavaScript堆内存不足

var http = require("http"),
fs = require("fs");        

http.createServer(function(req, res){

    fs.readFile("./index_ASYNC.html", function(err, html){    
        var i=0;

        while(true) {    
            i++;    
            res.write(i+""); // Envía respuestas al navegador.
        }

        // res.writeHead(200,{"Content-Type":"text/html"});
        res.end();
    });

}).listen(8080);

产生的错误:

<---最后几个GC-->

[5344:00000000002C05B0]46772 ms:Mark-sweep 1399.5(1427.9)->1399.5(1427.9)MB,2231.9/0.0ms分配失败GC在旧空间中请求[5344:00000000002C05B0]49806 ms:Mark-sweep 1399.5(1427.9)->1399.5(1426.9)MB,2588.3/0.0ms最后手段GC在旧空间中请求[5344:000000002C05B0]52394 ms:Mark-sweep 1399.5(1426.9)->1399.5(1426.9)MB,2588.3/0.0ms最后手段GC在请求的旧空间中

=====JS栈迹===================================================================

安全上下文:0000028BF5325EE1 1:_发送[_http_outgoing.js:~216][PC=0000002FDD52590C](this=000000B79B184D2 1,data=000003BB18D85CB1,encoding=0000010C6FF02201,callback=0000010C6FF02201 )2:/*匿名*/[C:\leo\prodigios\cursonodeJS\4-encabezados\hola_html_asy nc_v2.js:~10][PC=0000002FDD5131F2](1E280BE21

致命错误:CALL_AND_RETRY_LAST分配失败-JavaScript堆从备忘录中取出

共有1个答案

洪俊捷
2023-03-14

很明显,这个例子会导致内存泄漏,这行就是导致它的原因:

while(true) {    
   i++;    
   res.write(i+""); // Envía respuestas al navegador.
}

这里是循环,无限地递增i并多次写入输出(应该只写一次)。

垃圾收集器没有时间来收集它,您的RAM很快就达到了极限

var http = require('http'); // import module
http.createServer(function (req, res) { // create http server
  // create header to let browser know what content you are trying to send
  res.writeHead(200, {'Content-Type': 'text/plain'});
  // write string to client
  res.write('Hello World!');
  // end the request
  res.end();
}).listen(8080); // listen to requests on http://localhost:8080
 类似资料:
  • <---JS StackTrace---> =====JS栈迹=================================================================== 安全上下文:0369632D1:create(This=036856A9)2:_Walk[034841A1:~764][PC=1CCAED1F](This=3A11A619,Visitor=3BCEFD

  • 节点版本为 根据在崩溃期间内存使用率不会超过 再现此错误的代码: 为了检查是否存在递归堆栈大小问题,我使用-stack-size=60000参数运行了下一段代码 并且得到了 然后我运行的代码给出了一个致命的错误:CALL_AND_RETRY_LAST Allocation失败-进程内存不足,具有相同的-stack-size=60000参数,并且没有。 因此我得出结论与递归堆栈大小没有共同之处。 我

  • 问题内容: 节点版本为 崩溃期间的内存使用情况未超出 产生此错误的代码: 要检查是否存在递归堆栈大小问题,我使用–stack-size = 60000参数运行了下一个代码 并得到了 然后,我运行了导致严重错误的代码:CALL_AND_RETRY_LAST分配失败-使用相同的–stack-size = 60000参数处理内存不足,并且没有得到。 因此,我得出结论与递归堆栈大小没有共同之处。 我该如何

  • > 客户端发送带有密码套件中包含的密码的“Client Hello”消息。 在server.xml中,这些密码都不出现。以下是catalina的条目: 连接器port=“4443”sslenabled=“true”acceptcount=“20000”maxthreads=“5000”allowtrace=“false”scheme=“https”secure=“true”clientauth=“