클라이언트와 서버 간의 파일 전송을 위해 샘플 프로그램을 다운로드했습니다. 1GB 파일로 프로그램을 실행하려고하면 스레드 "main"의 예외가 발생합니다. java.lang.OutOfMemoryError : Client.main (Client.java:31)의 Java 힙 공간 .Java 메모리 부족 - 힙 크기 초과
편집 : 줄 번호 31 : 바이트 [] mybytearray = 새 바이트 [FILE_SIZE];
public final static int FILE_SIZE = 1097742336;
// receive file
long startTime = System.nanoTime();
byte [] mybytearray = new byte [FILE_SIZE];
InputStream is = sock.getInputStream();
fos = new FileOutputStream(FILE_TO_RECEIVED);
bos = new BufferedOutputStream(fos);
bytesRead = is.read(mybytearray,0,mybytearray.length);
current = bytesRead;
do {
bytesRead =
is.read(mybytearray, current, (mybytearray.length-current));
if(bytesRead >= 0) current += bytesRead;
} while(bytesRead > -1);
bos.write(mybytearray, 0 , current);
bos.flush();
수정 사항이 있습니까?
31 줄은 무엇입니까? –
글쎄, 힙에 1GB를 할당하려고합니다. JVM 힙 크기는 얼마로 설정되어 있습니까? – OldProgrammer
이 독립형 자바 프로그램입니까? 프로그램에 더 큰 힙 크기를 제공하려면 -Xmx 매개 변수를 살펴보십시오. – Andrew