在循环内实例化 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,不是免费的)这样的分析器来确定内存泄漏。
我正在尝试实例化 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,不是免费的)这样的分析器来确定内存泄漏。