Я не самый опытный Java-программист в мире, и я пытаюсь создать инструмент, который принимает данные и сохраняет их, но у меня есть утечка памяти (по крайней мере, я думаю, что это происходит в любом случаеЯ получаю java.lang.OutOfMemoryError: пространство кучи Java).
Вот код ошибки:
public static void main(String[] args)
{
File inputDirectory = new File(args[0]);
File[] files = inputDirectory.listFiles();
for(int i = 0 ; i < files.length ; ++i)
{
DoSomethingWithTheFile(files[i]);
}
}
public static void DoSomethingWithTheFile(File inputFile) throws VariousExceptions
{
boolean result = false;
if(inputFile.exists())
{
FileReader fr = new FileReader(inputFile);
BufferedReader br = new BufferedReader(fr);
Stack lines = new Stack();
String line;
while((line = br.readLine()) != null)
{
lines.push(line);
}
br.close();
int numberOfRecords = lines.size();
for(int i = 0 ; i < numberOfRecords ; ++i)
{
String theString = (String)lines.pop();
}
result = true;
}
return result;
}
Я читаю в стек, чтобы я знал числострок в файле, прежде чем я начну обработку, чтобы я мог дать пользователю некоторое представление о том, как далеко мы в файле.
Очевидно, что это игрушечный пример, и в реальной версии он делает больше, чем этотОднако я могу повторить проблему с приведенной выше урезанной версией кода.В настоящее время я пытаюсь прочитать 4 файла, первый из которых содержит чуть более полумиллиона строк, а второй - чуть более четверти миллиона.Программа бомбит, пытаясь прочитать третий файл.
Есть идеи, что я делаю неправильно?
Спасибо, Рик