2012-04-11 3 views
-2

는 다음 코드Java - 왜 OutOfMemoryError가 없습니까?

ArrayList container = new ArrayList(); 

while (true){ 
    Integer i = new Integer(1); 
    container.add(i); 
} 

충돌 아무것도하지만, 인쇄 또는 덤프 응용 프로그램을 사용하여 OutOfMemoryError가 발생하는 것을 시도하고있다! 이게 정상인가? java 명령에 몇 가지 옵션을 전달해야합니까? 이 메시지를 인쇄하려면 어떻게해야합니까?

응용 프로그램이 추적 기능이없는 임베디드 시스템 (cvm 사용)에서 실행 중이므로이 작업을 수행하고 있습니다. 메모리 누수가 의심되므로 메모리 누수로 인해 어떤 종류의 메시지가 jvm 출력을하는지 알 수있는 코드를 작성하려고합니다. 나는 그것이 추락하지만 추적이 주어지지하고, 그것을 실행했을 때 난 그 코드을 쓴 이유는 내가 어떻게해야합니까 내가 엘리

+0

왜이 작업을 수행해야하는지 더 설명해 주시겠습니까? 이 조건을 테스트하는 것이 더 좋은 방법입니다. – AHungerArtist

+1

컴파일도합니까? Integer에는 인수 생성자가 없다고 생각하지 않습니다. – evanwong

+0

@KirkWoll, 그들이 명확한 의도를 부여하면 더 나은 대답을 줄 수 있을지도 모릅니다. 그때까지 이것은 그들이 나에게서 얻을 최고 다. –

답변

6

이 질문에

을 게시 왜 이것이입니다

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

ArrayList container = new ArrayList(); 
while (true) { 
    Integer i = new Integer(1); 
    container.add(i); 
} 

뭔가를 Integer 생성자에 넣으면. 그렇지 않으면 컴파일 할 수 없습니다.

+1

이제 진짜 답변입니다 –

+1

''Integer i = new Integer (1)'을'int [] i = new int [10000]'로 바꾸면 더 빨리 도착할 수 있습니다 ... – Alex

+2

글쎄, 당신이 필요로하는 것이 전부입니다. 꼭대기에서 똑바로 쏘지 않으시겠습니까? 'long [] x = new long [Integer.MAX_VALUE]' –

관련 문제