반응형
!MESSAGE Failed to execute runnable (java.lang.OutOfMemoryError: PermGen space) !STACK 0
org.eclipse.swt.SWTException:Failed to execute runnable (java.lang.OutOfMemoryError: PermGen space)
at org.eclipse.swt.SWT.error(SWT.java:3563)
at org.eclipse.swt.SWT.error(SWT.java:3481)
이클립스사용도중 갑자기 다운될때 eclipse/.metadata/.log 를 확인하면 위와 같은 메시지를 확인할수있다.
OutOfMemoryError 라고 하니 메모리가 부족해서인거같은데 PermGen space 는 뭘 의미하는걸까?
아마 메모리가 부족한 영역이라고 짐작할수 있다.
그리고 밑에보면 SWTException 이라고 나오는데 리치클라이언트 프로그램작업이 리소스를 많이 차지하는것같다.
위에서 질문했듯이 PermGen space 는 JVM 에서 관리하는 2가지의 메모리 영역중 한곳인데
그 두가지가 무엇이냐하면 Java Heap space, Permenant Generation 이다.
Heap 은 프로그램이 돌아가는 도중에 생성삭제되는, 그러니까 garbage-collected 가 일어나는곳이며
Permenant 는 프로그램이 끝날때까지 영원히 메모리를 차지하고 있는 공간이다. garbage-collected 가 일어나지 않는곳이다. 그럼 두가지 영역에 어떤 애들이 들어가는지는 쉽게 유추해볼수 있을것이다.
Heap 에는 동적으로 생기는 메모리 들이 들어가는 곳이고, Permenant 는 Class names, internalized strings,
objects 등이 들어가는데 이름에서도 알수 있듯이 PermGen 이 이곳에 해당한다.
그럼 문제해결은 이 Permenant 라는 공간을 이클립스 실행시에 영구히 늘여주면 될것이다. 기본은 20M 정도 밖에 되지 않는다. 기존에 쓰는 이클립스 파라미터는
javaw -vmargs -Xverify:none -XX:+UseParallelGC -XX:PermSize=20M -XX:MaxNewSize=32M -XX:NewSize=32M -Xmx512M
추가로 PermGen 영역을 추가하여 수정한 파라미터이다
javaw -vmargs -Xverify:none -XX:+UseParallelGC -XX:PermSize=64M -XX:MaxPermSize=128M -XX:MaxNewSize=32M -XX:NewSize=32M -Xmx512M
위와같이 파라미터값을 조절하고 한가지더 챙겨야 할것이 하나의 Workspace 에서 포함되어있는 프로젝트 수는 필요한것만 골라서 최소로 하는것이좋다. Workspace 에 포함되어있는 모든 클래스정보들이 메모리에 올라가기 때문이다.
org.eclipse.swt.SWTException:Failed to execute runnable (java.lang.OutOfMemoryError: PermGen space)
at org.eclipse.swt.SWT.error(SWT.java:3563)
at org.eclipse.swt.SWT.error(SWT.java:3481)
이클립스사용도중 갑자기 다운될때 eclipse/.metadata/.log 를 확인하면 위와 같은 메시지를 확인할수있다.
OutOfMemoryError 라고 하니 메모리가 부족해서인거같은데 PermGen space 는 뭘 의미하는걸까?
아마 메모리가 부족한 영역이라고 짐작할수 있다.
그리고 밑에보면 SWTException 이라고 나오는데 리치클라이언트 프로그램작업이 리소스를 많이 차지하는것같다.
위에서 질문했듯이 PermGen space 는 JVM 에서 관리하는 2가지의 메모리 영역중 한곳인데
그 두가지가 무엇이냐하면 Java Heap space, Permenant Generation 이다.
Heap 은 프로그램이 돌아가는 도중에 생성삭제되는, 그러니까 garbage-collected 가 일어나는곳이며
Permenant 는 프로그램이 끝날때까지 영원히 메모리를 차지하고 있는 공간이다. garbage-collected 가 일어나지 않는곳이다. 그럼 두가지 영역에 어떤 애들이 들어가는지는 쉽게 유추해볼수 있을것이다.
Heap 에는 동적으로 생기는 메모리 들이 들어가는 곳이고, Permenant 는 Class names, internalized strings,
objects 등이 들어가는데 이름에서도 알수 있듯이 PermGen 이 이곳에 해당한다.
그럼 문제해결은 이 Permenant 라는 공간을 이클립스 실행시에 영구히 늘여주면 될것이다. 기본은 20M 정도 밖에 되지 않는다. 기존에 쓰는 이클립스 파라미터는
javaw -vmargs -Xverify:none -XX:+UseParallelGC -XX:PermSize=20M -XX:MaxNewSize=32M -XX:NewSize=32M -Xmx512M
추가로 PermGen 영역을 추가하여 수정한 파라미터이다
javaw -vmargs -Xverify:none -XX:+UseParallelGC -XX:PermSize=64M -XX:MaxPermSize=128M -XX:MaxNewSize=32M -XX:NewSize=32M -Xmx512M
위와같이 파라미터값을 조절하고 한가지더 챙겨야 할것이 하나의 Workspace 에서 포함되어있는 프로젝트 수는 필요한것만 골라서 최소로 하는것이좋다. Workspace 에 포함되어있는 모든 클래스정보들이 메모리에 올라가기 때문이다.
반응형
'프로그래밍 툴 > 이클립스(Eclipse)' 카테고리의 다른 글
javadoc 뽑아내기 (0) | 2008.12.11 |
---|---|
jad decompiler 설치와 eclipse 에서 활용하기 (4) | 2008.10.25 |
이클립스 내부 브라우저 활용해서 손쉽게 디버깅하기 (0) | 2008.10.18 |
기본 인코딩 정보를 바꾸고 싶을때 (0) | 2008.10.18 |
eclipse UML Tool 사용하기 (0) | 2008.10.18 |
eclipse console log 다른 프로그램에서 모니터 하기 (3) | 2008.10.15 |
폰트크기와 폰트종류를 셋팅하고 싶을때 (0) | 2008.09.29 |
javascript, ASP 활용을 위한 Eclipse tool (0) | 2008.09.29 |