OutOfMemoryError: PermGen space 에러문제
개발을 하면서 이클립스를 빼놓을수는 없다. 매번 프로젝트가 끝날때마다.
버전업하면서 바뀐부분이 무엇인지를 확인해보곤 하는데
이번 이클립스 3.3 europa 버젼은 좀 문제가 있는 듯 하다
3.1 이나 3.2에서는 별 이상이 없는데 3.3에서만 PermGen space 메모리 에러가 발생하면서 이클립스가 죽어버린다
PermGen은 클래스명 내부String같이 가비지 콜렉팅에 해당되지 않는 객체들을 위해 영구적으로 생성된 영역이라고 한다.
이부분에서 메모리 부족이 생기는것이 에러의 발생원인이라고 하는데
내 경우엔 기존의 프로젝트를 불러온 것도 아니고 단순히 프로젝트 하나 만들어 테스트페이지 하나 만들면서 설정파일을 읽어들이기만 하면
PermGen space 에러를 뿌려댄다.
나뿐만 아니라 Run AS.. 같이 ant를 실행시키거나 외부프로그램을 실행할때 그런 일이 발생한다는 주변인의 말을 들어보면
이클립스나 SUN vm의 버그가 아닌가 생각된다
기냥 3.2 버젼을 쓰면 별 상관이 없겠지만 일단 3.3을 사용하려고 한다면 임시 방편으로
이클립스 실행옵션에 MaxPermSize를 늘려주거나 이클립스내 외부프로그램 실행옵션 중 jre 부분의 Default VM Arguments 를 변경해주면 된다. 머 이방법은 3.3이 아니라 이전버젼에서도 메모리 부족 현상이 일어날때 공통적으로 적용가능한 방법이다
좀더 상세히 적어보면
먼저 MaxPermSize를 충분히 설정해주는 방법인데
eclipse -vmargs -XX:PermSize=256M -XX:MaxPermSize=512M
이렇게 하면 실행시 VM옵션이 적용된다고 하는데
플러그인 같은걸 많이 등록한 경우엔 이클립스 구동속도가 조금 빨라진다는 느낌이 들지만
ant 같은 외부 프로그램 실행시에는 여전히 같은 메시지를 뿌려대는건 마찬가지이니
아마 외부프로그램과는 좀 무관한 설정같다는 생각이 든다.
아니면 이클립스 홈디렉토리의 eclipse.ini 파일의 옵션을 변경해도 된다
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
-vmargs
-Xms40m
-Xmx256m
-XX:MaxPermSize=512
설정시에 3번째 라인처럼 lancher 옵션으로 MaxPermSize를 지정해도 된다고 하는데
유로파버전에서는 lancher옵션이 잘 적용되지 않는도고 하니 기냥 하단에 옵션을 추가하면 된다.
두번째 방법은 외부프로그램실행시 PermGen 메모리 부족이 발생하는것을 막기위해서 jre 옵션부분에 위의 옵션들을 넣어주는것이다.
1. Window > Preperences ..
2. Java > Installed JREs 에서 사용중인 jre 나 jdk 클릭
3. 오른쪽메뉴의 Edit.. 클릭
4. Default VM Arguments 항목에
-vmargs-Xms40m -Xmx256m -XX:MaxPermSize=512m
입력후 확인
일단 이리하면 에러는 많이 없어지지만 3.2를 쓸지 3.3을 쓸지 고민을....
'개발 이야기 > 이클립스' 카테고리의 다른 글
Eclipse로 try/catch 자동생성하기 (0) | 2008.02.05 |
---|---|
[Plug-In] UML2 (0) | 2008.01.31 |
이클립스로 JAVA API 열기 (0) | 2007.12.21 |
[이클립스] ANT_OPT 설정(Heap Size 추가) (0) | 2007.06.04 |
java warning: no definition of serialVersionUID (0) | 2007.05.17 |