我的应用程序中有两个文件到字符串进程(一个实际处理资产文件)
如果我在同一个文件上重复这些过程中的任何一个,我会得到OutOfMemoryErrors
我怀疑这可能是因为我没有正确关闭流,因此可能导致创建多个流,这可能导致我的应用程序耗尽内存。
以下是两个过程的代码:
我的资产文件到字符串流程。
正如你所看到的,我有一些东西可以关闭流,但我不知道它是否格式正确。
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");
}
答案 0 :(得分:3)
很难说什么可能导致OOME,但关闭应该是这样的
InputStream is = getAssets().open(myAssetsFilePath);
try {
myVeryLargeString = IOUtils.toString(is, "UTF-8");
} finally {
IOUtils.closeQuietly(is);
}