【发布时间】:2013-07-01 03:51:27
【问题描述】:
我的应用中有两个文件到字符串的进程(一个实际上处理资产文件)。
如果我在同一个文件上多次重复这些过程中的任何一个,我就会得到 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");
}
【问题讨论】:
-
IOUtils 和 fileutils 是你的课吗??
-
我猜你打开流两次然后关闭它
getAssets().open(myAssetsFilePath)看起来很可疑 -
考虑将
close()调用放在finally块中。 -
@Ashish Aggarwal:我不确定你在问什么。
-
@BevynQ 虽然这两个进程都导致了 OutOfMemoryErrors;不只是资产之一。另外,如果你认为那段代码是可疑的,你可能知道我应该把它改成什么吗?谢谢。
标签: java android out-of-memory assets fileutils