我正在尝试实现FileReader,为它提供一个while循环内文件的String路径 问题是30个文件后,我收到错误
java.lang.OutOfMemoryError:Java堆空间
路径动态地赋予循环内的fileReaders:
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 **********
}
}
此处每次迭代的FileName都会更改
我想找到一种避免出现内存不足错误的方法 我试过fR.close()和System.gc(),但我仍然有错误 有没有人有想法?
答案 0 :(得分:1)
有人持有对FileReader对象或其他对象的引用。 (顺便说一句:你必须关闭FileReader,寻找try-with-resource以便于处理)不一定是FileReader的问题,它也可能是你的程序中保留(引用)的另一个对象。
尝试使用VisualVM(或者YourKit,不是免费的)分析器来确定内存泄漏。