在循环内实例化 FileReader 而不会出现错误 java 堆 space

instantiate FileReader inside a loop without having error java heap space

我正在尝试实例化 FileReader,在 while 循环中给它一个文件的字符串路径 问题是在 30 个文件之后,我收到错误

java.lang.OutOfMemoryError: Java heap space

路径是动态提供给循环内的 fileReader 的:

DocumentBuilder doc= DocumentBuilderFactory.newInstance().newDocumentBuilder();
while (Index < Events.size() ) {
  String FileName = getFileName(canal,Date,time);
  Doc =doc.parse(new File(Deposit+File.separator+FileName));
  FileReader fR = new FileReader(Deposit+File.separator+FileName);
  PlaylistString =FileCopyUtils.copyToString(fR);
  if(Doc!=null && PlaylistString.contains(some_text)){
  // Some treatment **********
  }

}

此处文件名每次迭代都会更改

我想找到一种方法来避免出现内存不足错误 我尝试了 fR.close() ans System.gc() 但我仍然有错误 有人有想法吗?

有人持有对 FileReader 对象或另一个对象的引用。 (顺便说一句:您必须关闭 FileReader,寻找 try-with-resource 以便于处理)不一定是 FileReader 是问题所在,它也可能是程序中保留(引用)的另一个对象。

尝试使用像 VisualVM(或 YourKit,不是免费的)这样的分析器来确定内存泄漏。