Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Eclipse Helios와 JDK 6u21를 사용할 때 OutOfMemory 오류가 발생하는 문제

지난 6월 23일에 발표된 Eclipse 3.6 Helios를 슬슬 사용해 보려고 새로운 마음으로 JDK도 JDK 6 Update 21을 다운받아서 설치하고 기존에 사용하던 프로젝트를 저장소에서 Checkout받자 프로젝트를 생성하던 도중 이클립스가 죽어버리는 현상이 발생했습니다. (Subclipse, m2eclipse 사용중)

기존에도 종종 이클립스는 메모리오류가 발생하였기 때문에 아무생각없이 eclipse.ini파일을 수정하여 주었지만 좀처럼 해결되지 않고 계속 프로젝트를 받아오다가 번번히 죽어버렸습니다. 로그파일을 확인하니(.log파일은 workplace안에 .metadata폴더 안에 있습니다.) 아래와 같은 오류가 발생하였습니다.

java.lang.OutOfMemoryError: PermGen space


기존의 eclipse.ini파일의 수정으로는 도저히 해결이 되지 않아서 Helios가 안정적이지 않은 것으로 막연히 생각하고 있었는데 트위터를 통해서 해당 문제에 대한 해결책을 얻을 수 있었습니다.

이 문제는 JDK 6u21에서 발생하는 문제인데 6u21에서 vendor명이 기존의 Sun에서 Oracle로 변경이 되었습니다. Eclipse 런처가 JVM의 벤더를 읽어서 Sun JVM일 경우에는 추가적으로 이클립스의 동작을 위해 필요한 XX:MaxPermSize 설정을 추가하는데 6u21에서는 Sun이 아닌 Oracle로 변경이 되어 이 설정이 먹히지 않는 것입니다. 이 내용은 이클립스의 버그로 등록은 되었지만 9월에 예정된 Helios SR1에서 수정될 예정은 없어보인다고 합니다.

이클립스의 폴더안에 있는 eclipse.ini파일을 열어서 아래의 부분을 삭제합니다.

--launcher.XXMaxPermSize
256m

그 다음에 -Xmx설정뒤에 -XX:MaxPermSize=512m 를 추가하면 위의 OutOfMemoryError를 피할 수 있습니다.

아래 내용은 참고용으로 올리는 저의 eclipse.ini파일입니다.

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
128M
-showsplash
org.eclipse.platform
-vm
C:\Program Files\Java\jdk1.6.0_21\bin\
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-XX:MaxPermSize=256m

이 문제는 Windows플랫폼에서만 발생한다고 합니다.



추가로 봄싹의 김성호님이 공유해 주신 이클립스 위키에 위 문제의 해결법에 대해서 잘 나와있습니다.

  1. 6u20으로 다운그래이드
  2. eclipse.ini에  -XX:MaxPermSize=256m 추가
  3. 수정된된 이클립스용 dll을 다운받아 사용
이렇게 3가지 방법숭 하나를 사용하라고 권하고 있습니다.
2010/07/20 03:37 2010/07/20 03:37