민서네집

이클립스 Out Of Memory Error 본문

Java

이클립스 Out Of Memory Error

브라이언7 2012. 8. 30. 14:52

OOME (Out Of Memory Error)

 

이 에러가 발생하면 eclipse.ini 혹은 sts.ini 에서 메모리 size를 크게 키워 줬는데,

 

-Xmx 를 너무 크게 설정하면 오히려 이런 에러가 발생할 수 있다는 사실을 알았다.

 

[출처] http://ir.bagesoft.com/657

 

[일부 발췌]

 

Java Heap 크기를 줄인다. 32bit Process가 사용 가능한 메모리 공간은 OS에 따라 2G ~ 4G로 제한된다. 하나의 Java Process가 사용 가능한 공간은 [Java Heap+Permanent Space+Native Heap]으로 이루어진다. 따라서 Java Heap이 지나치게 큰 공간을 사용하는 경우 Native Heap에서 사용 가능한 공간이 줄어들게 된다. 따라서 Java Heap 크기를 줄이면 Native Heap의 메모리 부족에 의한 OOME 문제를 해결 할 수 있다. 하지마 Java Heap 크기를 지나치게 줄이면 Java Heap 부족에 의한 OOME 현상이 발생할 수 있으므로 유의해야 한다. Java Heap 크기를 줄이는 방법은 Thread Stack Space의 부족 문제 뿐 아니라 Native Heap 부족에 의한 OOME 문제를 줄이는 공통적인 해결 방법이다.

 

-Xss 의 크기를 오히려 줄여야 한다. 이것은 Java Thread 하나가 사용하는 스택 메모리의 크기이다. 따라서 이 값을 크게 하면 Java Thread 를 생성할 수 없어서 에러가 난다.

 

[일부 발췌]

 

Thread Stack Size를 줄인다. 대부분의 OS에서 Thread Stack Size는 512K ~ 1M이다. 만일 많은 수의 Thread가 필요한 Application이라면 Thread Stack Size를 줄임으로써 OOME를 방지할 수 있다. 많은 경우 -Xss128k 정도나 -Xss256k 정도의 크기에서도 문제없이 작동한다. 단, Stack Size가 줄어든 만큼 Stack Overflow Error가 발생할 확률은 높아진다.

 

Comments