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
对象。它是在启动时安装一个对象并重用它,因此将它的创建提取到一个变量不会使您的代码变得更好,它已经可以了