代码如下: function loadAll() { // load all data updateService[prop].load(load_data); var mem = process.memoryUsage(); console.log('rss:’, Math.round((mem.rss / 1024)) + “KB”); } setInterval(loadAll, 1000 * 0.5);
加载代码: TopadSchema = mongoose.Schema({ name : String, desc : String, updateTime : Number, }, { collection : ‘topad’ // 文档名 });
var TopadModel = mongoose.model('Topad', TopadSchema);
exports.loadTopad = function(callback) {
TopadModel.find({}).sort('-updateTime').limit(1).exec(
function(err, topads) {
if (err) {
if (callback)
callback(err);
return;
}
if (!topads || topads.length === 0) {
if (callback)
callback(null, {});
return;
}
var topad_res = topads[0];
if (callback)
callback(null, topad_res);
}); }
周期性执行的时候内存一直在涨, 貌似就是内存泄漏了。 请问各位大大,这个是什么情况呀。
1 回复
-
最好将console.log的日志贴出部分,以说明内存增涨的幅度。KB单位的内存变化对有垃圾回收机制的语言来说,正常的不能再正常。请将以MB为单位打印nodejs的内存变化。
-
请以
--expose_gc
来运行node,调用gc()后才打印内存的大小,以排除未回收的临时对象所造成的影响。例如:node --exporse_gc app.js
,然后在loadall
增加gc()
。
function loadAll() {
// load all data
updateService[prop].load(load_data);
gc();
var mem = process.memoryUsage();
console.log('rss:', Math.round((mem.rss / 1024/1024)) + "MB");
}