본문 바로가기
프로그래밍/운영체제, 서버

Eclipse + Weblogic 개발환경에서 Caused By: java.lang.OutOfMemoryError: PermGen space 오류

by pentode 2018. 12. 21.

Eclipse와 Weblogic을 연동하여 개발하는 도중 소스를 수정 하고 컴파일 하는 과정을 반복하면 메모리 부족(PermGen space) 오류가 발생하고 Weblogic이 죽어 버립니다. 그렇게 되면 대부분 작업관리자에서 java.exe 프로세스를 끝내지 않으면 재시작도 되지 않는 경우가 많습니다.



Caused By: java.lang.OutOfMemoryError: PermGen space

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)

at java.lang.ClassLoader.defineClass(ClassLoader.java:615)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)

at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:343)

Truncated. see log file for complete stacktrace


자바 VM 설정에서 PermSize를 올리게 되면 완전히 해결되지는 않지만 어느정도 더 버티게 되는것 같습니다.


설정은 도메인 디렉토리 아래의 bin 디렉토리 아내에 setDomainEnv.cmd 파일에서 수정합니다.


user_projects\domains\base_domain\bin\setDomainEnv.cmd



자신의 운영체제의 비트수에 맞는 항목의 -XX:PermSize-XX:MaxPermSize의 값을 올립니다.


set MEM_PERM_SIZE_64BIT=-XX:PermSize=128m

set MEM_PERM_SIZE_32BIT=-XX:PermSize=48m


set MEM_MAX_PERM_SIZE_64BIT=-XX:MaxPermSize=256m

set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=128m


추가로 프로젝트의 파일 엔코딩이 UTF-8인 경우 콘솔에 한글이 깨지는 경우에는 위의 설정 파일에서 엔코딩을 설정할 수 있습니다.



아래와 같이  set JAVA_PROPERTIES 부분에 엔코딩을 추가합니다. -Dfile.encoding=UTF8 -Dfile.client.encoding=UTF8 을 라인 끝에 추가하거나 윈도우의 경우 기존 라인 끝에 ^ 을 추가하고 다음라인에 적어도 됩니다.


set JAVA_PROPERTIES=-Dwls.home=%WLS_HOME% -Dweblogic.home=%WLS_HOME% ^

 -Dfile.encoding=UTF8 -Dfile.client.encoding=UTF8


변경후 아래처럼 한글이 제대로 나오게 됩니다.


<2018. 12. 21 오전 12시 14분 55초 KST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RESUMING>


반응형