我使用以下代码删除目录子目录中超过15天未访问过的文件。代码可以工作,但是进程使用的内存增加到2gb以上,之后不会释放。所以显然存在内存泄漏,但对于我的生活,我不知道是什么。我该怎么做这个不同的方式?
readDirectories();
function readDirectories() {
fs.readdir( dirPath, function( err, subDirs ) {
if ( err ) return console.log( err );
subDirs.forEach(function( subDir ) {
var subDirPath = dirPath + subDir + "/";
fs.stat( subDirPath, function( err, stat ) {
if ( err ) return console.log( err );
if ( stat && stat.isDirectory() ) readFiles( subDirPath );
});
});
});
}
function readFiles( directory ) {
fs.readdir( directory, function( err, files ) {
if ( err ) return console.log( err );
files.forEach(function( file ) {
checkFile( directory + file );
});
});
}
function checkFile( path ) {
fs.stat( path, function( err, stat ) {
if ( err ) return console.log( err );
if ( stat && stat.isFile() ) {
var livesUntil = new Date();
livesUntil.setDate( livesUntil.getDate() - 15 );
if ( stat.atime < livesUntil ) {
fs.unlink( path, function( err ) {
if ( err ) return console.log( err );
});
}
}
});
}