내 앱에는 두 개의 파일 - 문자열 프로세스가 있습니다 (하나는 실제로 자산 파일을 처리합니다).
같은 파일에서이 프로세스 중 몇 번을 반복하면 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
'finally()'호출에'close()'호출을 두는 것을 고려하십시오. –