2013-03-05 1 views
-1

다음 코드를 사용하여 이미지의 바이트 배열을 읽으려고하지만 메모리 부족 예외가 발생합니다. 예외가 발생한 곳을 주석 처리했습니다.ByteArrayOutputStream OutOfMemoryError throw

byte[] bBuffer = new byte[300000]; // 
ByteArrayBuffer baf = new ByteArrayBuffer(300000); 
int total = 0; 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
try 
{ 
    int read = 0;   
    while ((dis.read(bBuffer, 0, bBuffer.length)) != -1) { 
     baos.write(bBuffer, 0, bBuffer.length); // Exception occurs here   
     Log.d("outputImageBytes", "Reading Image Bytes: " + bBuffer.length + " " + read++); 
    } 
    //baos.flush(); 
} 
catch (Exception e) 
{ 
    Log.e("outputImageBytes", "Exception Occured while reading image bytes: " + e.getMessage()); 
    e.getMessage(); 
} 
+2

'baos'에 쓸 때'dis.read (..) '값을 무시합니다. 읽은 실제 바이트 수를 반환합니다. 이제 버퍼의 총 길이가 항상 삽입됩니다. –

+0

조금 혼란 스러워요, 제발 제발 좀 줄래? :) –

답변

1

실제로 읽는 바이트 수를 무시합니다.

+0

그래, 전에도 해봤지만 여전히 OutOfMemoryError에 들어갑니다. –

+0

문제는 우리가 동일한 바이트 배열에서 읽고 쓰고있는 것일 수 있습니다. – kaysush

+0

예, 내가 한 실수입니다. 그러나 그것을 변경 한 후에도 동일한 문제가 발생합니다. –