У меня есть два процесса от файла к строкам в моем приложении (один фактически имеет дело с файлом активов).
Если я повторяю один из этих процессов несколько раз в одном файле, я получаю OutOfMemoryErrors.
Я подозреваю, что это может быть из-за того, что я не закрываю потоки должным образом и поэтому могу создать несколько потоков, и это может привести к тому, что у моего приложения закончится нехватка памяти.
Вот код из двух процессов:
Как правильно закрыть поток ввода строки в строку? (IOUtils FileUtils)
Мой процесс активов файла в строку.
Как вы можете видеть, у меня есть что-то на месте, чтобы закрыть поток, но я не знаю, правильно ли оно отформатировано.
try
{
myVeryLargeString = IOUtils.toString(getAssets().open(myAssetsFilePath), "UTF-8");
IOUtils.closeQuietly(getAssets().open(myAssetsFilePath));
}
catch (IOException e)
{
e.printStackTrace();
}
catch(OutOfMemoryError e)
{
Log.e(TAG, "Ran out of memory 01");
}
Мой процесс файла в строку.
Я понятия не имею, как закрыть этот поток (если есть даже поток для закрытия вообще).
myFile01 = new File(myFilePath);
try
{
myVeryLargeString = FileUtils.readFileToString(myFile01, "UTF-8");
}
catch (IOException e)
{
e.printStackTrace();
}
catch(OutOfMemoryError e)
{
Log.e(TAG, "Ran out of memory 02");
}
IOUtils и FileUtils является ваш класс ?? –
Я предполагаю, что вы открываете поток дважды, затем закрываете его 'getAssets(). Open (myAssetsFilePath)' смотрит подозреваемый – BevynQ
Рассмотрите возможность размещения вызовов 'close()' в блоке 'finally'. –