こんにちは私は巨大なデータをインポートしようとしています。その8GBの周りに53k個のファイルがあります。 私が望むのは、一度に1つのファイルをインポートし、その使い方で完了してから、キャッシュを削除/削除またはガベージコレクトします。ローカル変数の値を使用後にクリア/ガベージコレクションする方法
delete
キーワードを使用すると、objインスタンスの参照のみが削除されることがわかります。削除または変数値をnull
またはundefined
に設定しても機能しません。
ここに私のコードです。
fs.readdir(dirname, (err, filenames) => {
if (err) {
onError(err);
return;
}
_.forEach(filenames, (file) => {
if (!!~file.indexOf('.json')) {
this.synchronize(() => {
let currentFile = require(`${dirname}${file}`);
return new Promise((resolve, reject) => {
setTimeout(() => {
//assume am done working with the data imported in variable currentFile here. now i want to delete it.
resolve('Done');
}, 1)
})
})
}
});
});
キャッシュを空にするには成功していない可能性があります。 currentFile
を処理した後にそれをクリアする方法はありますか?
また、フォルダ内の任意の数のファイルに対して機能するようにコードを調整する方法があります。
任意のヘルプは、私はあなたのコードを持つ2つの大きな問題を参照してください
グローバルモジュールキャッシュを使用する 'require'の代わりに' JSON.parse(fs.readFile(...)) 'を使ってみてください。またはキャッシュをクリアする - 重複した質問を参照してください。 – Bergi