代码之家  ›  专栏  ›  技术社区  ›  URKA

NodeJS-致命错误:CALL\u和\u RETRY\u上次分配失败

  •  1
  • URKA  · 技术社区  · 7 年前

    我有这个问题。。。我正在使用Windows 7和Chrome。

    我尝试过这种解决方案: FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory

    但没有起作用。

    还尝试了其他方法: Devextreme : FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

    但我找不到那个文件,就像它不存在一样。

    1. 我正在努力 this 辅导的

    2. 我正在执行的代码如下:

    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);
    
    1. 我使用 节点hola\u html。js公司 .

    2. 产生的错误:

    <---最后几个GCs--->

    [5344:0000000000 2C05B0]46772毫秒:标记扫描1399.5(1427.9)-> 1399.5(1427.9)MB,2231.9/0.0毫秒分配失败请求的旧空间中的GC[5344:0000000000 2C05B0]49806毫秒:标记扫描1399.5 (1427.9)->1399.5(1426.9)MB,2583.4/0.0毫秒最后一次使用GC 请求的旧空间[5344:0000000000 2C05B0]52394毫秒:标记扫描 1399.5(1426.9)->1399.5(1426.9)MB,2588.3/0.0毫秒请求旧空间中的最后一个GC

    <---JS stacktrace--->

    ===JS堆栈跟踪=========================================

    安全上下文:00000 28BF5325EE1 1: \u发送[\u http\u outgoing.js:~ 216][pc=000000 2FDD52590C](此=000000 B79B184D2 1,数据=00000 3BB18D85CB1,编码=00000 10C6FF02201,回调=00000 10C6FF02201<null>) 2: /*匿名*/[C:\Leo\Prodigios\CursoNodeJS\4-encabezados\hola\u html\u ASY NC\U v2。js:~ 10][pc=000000 2FD5131F2](此=00000 191E280BE21

    致命错误:CALL\u AND\u RETRY\u上次分配失败-JavaScript堆 备忘录外

    1. 我必须补充一点,我尝试了在互联网上找到的第二种选择( Devextreme:致命错误:CALL\u AND\u RETRY\u上次分配失败-JavaScript堆内存不足 )但它没有起作用。
    1 回复  |  直到 7 年前
        1
  •  0
  •   sdooo    7 年前

    显然,此示例将导致内存泄漏,这一行导致了内存泄漏:

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

    你在这里循环无限递增 i 并多次写入输出(只应写入一次)。

    垃圾收集器已经没有时间来收集这些信息了,你的内存很快就会达到极限

    我不知道视频中的语言,但我相信作者是在警告这种方法。

    示例应用程序可能如下所示:

    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
    

    我在你的教程中看到了一些更复杂的例子,比如 4:25