我正在为使用MongoDB编写的NodeJS中的应用程序编写集成测试.
在CI服务器上,我希望有一些嵌入式MongoDB,以实现更快的性能和更轻松的控制.目前我在其他服务器上安装了MongoDB,但测试速度很慢.在每次测试之前,我需要删除所有集合.我使用猫鼬作为ORM.
到目前为止,我只发现了嵌入式MongoDB for Java.
integration-testing embedded-database mongoose mongodb node.js
当我们开始测试我们的NodeJS项目时,我们注意到了巨大的内存消耗.它是由我们项目中的内存泄漏引起的.所以我们开始寻找可能导致内存泄漏的所有原因.stackoverflow上有一些关于这个问题的答案,但是没有任何关于什么是内存泄漏和什么不是内存泄漏的简明文档.
我的问题:
V8 GC是否收集了未使用但下面有功能闭包的变量?例:
var serviceChannel = require('./channel');
var dataRegistration = require('../data/registration');
function registerOnChannel(userID, channelID, callsuccess, callerror) {
serviceChannel.findChannel(channelID, function (channel) {
if (!channel) {
callerror("Channel doesn' exists");
return;
}
dataRegistration.registerOnChannel(userID, channelID, function (registration) {
if (!registration) {
callerror("Registration doesn' exists");
return;
}
callsuccess("Registration successful");
}, function (error) {
callerror("Error on registration");
})
}, function (error) {
callerror("Error on finding channel");
})
}
Run Code Online (Sandbox Code Playgroud)因此,只要registerOnChanel处于活动状态,serviceChannel和dataRegistration就会保留在内存中.但是GC会删除变量通道(任何功能都不使用它)?