Node.js 在每次登录时创建新的passport策略是否会导致内存泄漏?

Node.js 在每次登录时创建新的passport策略是否会导致内存泄漏?,node.js,passport.js,Node.js,Passport.js,我有一些这样的代码: passport.use(new SamlStrategy( { path:'/authorization/saml', cert:cert }, function(profile, done){ var issuer; issuer = profile.issuer._ || profile.issuer; return Users.findByUsernameQ(pr

我有一些这样的代码:

passport.use(new SamlStrategy(
    {
        path:'/authorization/saml',
        cert:cert
    },
    function(profile, done){
        var issuer;
        issuer = profile.issuer._ || profile.issuer;
        return Users.findByUsernameQ(profile.nameID.toLowerCase())
        .then(function(user){
            if (!user) return Q.reject({message:'no user found'});
            if (!user.active) return Q.reject({message:'Account is inactive'});
            if (user.isLocked()) return Q.reject({message:'Account is locked'});
            return samlAuthenticateQ(tenantId,issuer)
            .then(function(authenticated){
                if (authenticated){
                    return done(null, user)
                }else{
                    return done(null, false);
                }
            })
        }).catch(function(err){
            if (err.message) return done(null, null, err.message);
                else return done('Internal error', null);
            });
    }
));

如果我每次都像这段代码那样创建一个
新的SamlStrategy
,它会导致内存泄漏吗,还是最好将这个
SamlStrategy
对象分配给一个变量,然后只执行
passport.use(savedStrategy)

如果您不需要为每个请求使用不同的参数,我建议您创建一个对象,并将其保存在内存中,以便多次重复使用

并不是说您将创建内存泄漏,因为内存泄漏来自垃圾回收器无法释放已分配的不再使用的内存。它看起来更像是一个次优的实现

在计算机科学中,内存泄漏是一种资源泄漏,当计算机程序错误地管理内存分配,导致不再需要的内存不被释放时,就会发生这种泄漏

顺便说一下,您的代码不会创建很多
SamlStrategy
对象。它是在启动时安装一个对象并重用它,因此将它的创建提取到一个变量不会使您的代码变得更好,它已经可以了