首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在nodejs上做简单的压力测试时,我得到了致命的错误:分配失败-内存中的JavaScript堆

在nodejs上做简单的压力测试时,我得到了致命的错误:分配失败-内存中的JavaScript堆
EN

Stack Overflow用户
提问于 2017-05-16 13:29:10
回答 1查看 275关注 0票数 0

这个代码起作用了。但是如果我取消无休止的循环,就没有结果了。结束内存输入2G,然后它停止与错误。

致命错误: CALL_AND_RETRY_LAST分配失败-内存中的JavaScript堆

我做错了什么?

代码语言:javascript
复制
var Firebird = require('firebirdsql'); // or require('node-firebird');

var options = {};

options.host = '127.0.0.1';
options.port = 3050;
options.database = 'D:\\test\\test.FDB';
// ...

Firebird.attach(options, function(err, db) {

    if (err)
        throw err;

// while (1)    { // endless loop BEGIN
    db.query('SELECT first 1000 a.* FROM EVENTS a ORDER BY a.DATETIME', function(err, result) {
        if (err) throw err;

                for(r of result) {
                    console.log(r.datetime, ""+r.event_text);
                    // console.log(r.DATETIME, ""+r.EVENT_TEXT);  // for require('node-firebird');
                };
        // IMPORTANT: close the connection 
        db.detach();
    });

// } // endless loop END

});

我认为这并不重要,但我使用的是windows 10上节点的v6.3.1。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-18 12:11:09

使用函数setInterval而不是while循环,不要使用抛出,因为你和它一起退出程序。

代码语言:javascript
复制
Firebird.attach(options, function(err, db) {

    setInterval(
        function() {
            db.query('SELECT first 1000 a.* FROM EVENTS a ORDER BY a.DATETIME', function(err, result) {
                if (err) {
                    console.log("Error");
                }
                else {
                    for(r of result) {
                        console.log(r.datetime, ""+r.event_text);
                    };
                }
        // IMPORTANT: close the connection 
       //db.detach();
            });

        }, 1);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44002890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档