2016-07-05 2 views
-3

I 메모리 문제에서 저를주는 간단한 프로그램을 가지고 : 내 eclpse에서 VM 인수를 설정 시도만들기 정수 배열

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

:이 오류 아래가 발생

public static void main(String[] args) { 

    int i[] = new int[457560000]; 
} 

-Xms1024M -Xmx2048M과 같지만 여전히 동일한 오류가 발생합니다.

큰 배열은 필요 없지만 이미지 크기가 매우 큰 이미지 처리에 문제가 있습니다. 디버깅하는 동안 AWT 패키지가이 배열을 만들고 메모리 문제로 실패하려고한다는 것을 알았습니다.

이 문제를 해결하는 방법은 무엇입니까? 이 코드를 실행하기 전에 얼마만큼의 메모리를 설정해야합니까?

업데이트 : 나는 또한 6기가바이트 이클립스 실행 구성 VM 설정에서의 -Xmx 설정을 시도했다

, 내 컴퓨터는 몇 시간 동안 교수형 그러나 다시 같은 오류에 직면하게되었다.

+0

왜 그 크기의 배열을 만들어야합니까? Java는 가변 배열을 생성하기에 충분한 메모리가 없기 때문에 오류가 발생합니다. – Confiqure

+7

당신은 456 백만개의 정수가 필요합니까 ??? –

+1

[ "java.lang.OutOfMemoryError : Java 힙 공간"오류 (64MB 힙 크기)를 처리하는 방법] (http://stackoverflow.com/questions/37335/how-to-deal-with-java- lang-outofmemoryerror-java-heap-space-error-64mb-heap) – Filburt

답변

0

주어진 코드 스 니펫의에는 사용하는 JRE에 따라 -Xmx2640M 이상이 필요합니다.

-Xmx은 필요한 경우에만 사용되는 최대 값이며 예를 들어 -Xmx256000M과 같이 프로그램을 실행 한 다음 실제로 사용 된 메모리의 수를 확인할 수 있습니다.

+0

나는 이미 그것을 설정했다, 당신은 내 질문을 볼 수있다, 나는 그것을 언급했다. – user3181365

+0

'-Xmx2048M'을 _OutOfMemoryError_ occures로,'-Xmx2640M'을 사용하여 코드 스 니펫을 실행하면 오류가 발생하지 않습니다. Windows에서 64 비트 jdk1.8.0_60을 사용하여 스 니펫을 실행했습니다. 어떤 JRE를 사용합니까? – howlger