我正在尝试递归遍历我的驱动器以搜索一些文件。当文件夹/文件有限时,代码工作正常,但是当我将搜索目标定位到 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());
}
}
}
}