ドライブを再帰的にトラバースして、いくつかのファイルを検索しようとしています。フォルダ/ファイルが限られている場合、コードは正常に機能しますが、ファイルがたくさんあるCドライブを検索対象にすると、ヒープメモリが不足します。
スレッド「Thread-4」の例外java.lang.OutOfMemoryError:Javaヒープスペース
- 特に再帰呼び出しを行う場合は、メモリ管理の優れたトリックをいくつか提案してください。
- または、再帰せずにディレクトリをトラバースするためのより良いアプローチを教えてください。
そして、問題を当面延期するのと同じように、最大許容ヒープスペースを増やしたくありません。
コード:
void iterateDirectory(String somedir) {
File dir = new File(somedir);
File[] files = dir.listFiles();
if (files != null) {
for (int id = 0; id < files.length; id++) {
if (files[id].isDirectory() == false)
{
fsTree.add(files[id].toString()); // taking list of files
}
else
{
iterateFilesInDirectory(files[id].getAbsolutePath());
}
}
}
}