문제

Apache Commons IO FileUtils 유틸리티를 사용하여 파일을 바이트 어레이로 읽습니다. 파일의 크기는 1.13 기가 바이트입니다. 이 메소드가 호출 될 때마다 메모리 오류가 발생합니다. 8GB 메모리가있는 Windows Server 2008 64 비트 서버 에서이 실행이 실행됩니다. 이 오류를 처음 얻었을 때 Tomcat 6 구성 유틸리티를 열고 초기 메모리를 1024와 최대 메모리 풀을 2048로 설정했습니다. 이후 최대 메모리 풀에 대해 3072와 4096을 시도했습니다. 매번 Tomcat 서비스를 다시 시작하여 변경 사항이 필요합니다. 이러한 변경 사항 중 어느 것도이 오류를 수정했습니다. 왜요? Java 1.6 업데이트 14를 사용하고 있습니다.

attachment.setData(FileUtils.readFileToByteArray(attachmentFile));
도움이 되었습니까?

해결책

아래 코드 샘플은 내 문제를 해결했습니다. 버퍼 길이를 파일 길이로 설정했기 때문에 왜 이것이 왜 이것이 readfiletobytearray와 어떻게 다른지 알 수 없기 때문에 왜 그런지 확실하지 않습니다. 버퍼 길이를 파일보다 작은 것으로 설정했는지 확인할 수있었습니다.

FileInputStream fis = new FileInputStream(attachmentFile);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buffer = new byte[(int)attachmentFile.length()];

bis.read(buffer);

fis.close();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top