안녕하세요.

오늘은 이클립스 성능 최적화에 대해 알아보겠습니다.

주로 JVM 옵션 조정이 주가 됩니다.

타겟은 jdk 1.7 이상 권고 합니다.


eclipse/eclipse.ini 파일을  더블클릭하여 엽니다.


[힙 메모리 설정]

-Xms1152m (또는 자신의 메모리에 맞게 2048 등을 입력해도 된다. )
-Xmx1152m (또는 자신의 메모리에 맞게 2048 등을 입력해도 된다. )


자바는 힙메모리를 사용합니다. 힙메모리 설정에 따라 어플리케이션 성능이 많이 좌우되는데

힙메모리란 아래와 같습니다.

-> new 연산자로 생성된 객체와 배열을 저장하는 공간
-> 클래스 영역에 로드된 클래스만 생성가능
->
Garbage Collector를 통해 메모리 반환

- new 연산자로 생성된 객체와 배열을 저장하는 공간
- 클래스 영역에 로드된 클래스만 생성가능
- Garbage Collector를 통해 메모리 반환

출처: http://huelet.tistory.com/entry/JVM-메모리구조 [어떤공간]
- new 연산자로 생성된 객체와 배열을 저장하는 공간
- 클래스 영역에 로드된 클래스만 생성가능
- Garbage Collector를 통해 메모리 반환

출처: http://huelet.tistory.com/entry/JVM-메모리구조 [어떤공간]


그리고 힙 메모리는 아래와 같이 구성되어 있습니다.


New Object Space: 새로 생성된 객체를 위해 존재합니다. 다시 Eden, Survivor1, Survivor2로 세분화 되어 있습니다.

Old Object Space: 객체가 만들어진 후 오래된 객체들을 위해 존재하는 공간입니다.

Permanent Space: java class, method code 등이 저장되는 영역을 말합니다.







[GC설정]

-XX:+UseG1GC


위 내용을 설명하기 전에 garbage collection 및 Minor GC, Full GC를 설명하겠습니다.

자바는  JVM의 garbage collector라는 기능하는 친구가 있는데, garbage collection을 진행하는 과정 1이 Minor GC, 과정 2가 Full GC라고 합니다.

(속을 들여다 보면 더 깊은 내용이 있습니다)


각설하고,  Minor GC때는 어플리케이션이 멈추지 않지만, Full GC때는 어플리케이션이 멈출수 밖에 없습니다.

위 G1GC는 2G 이상의 Heap을 사용하는 크리티컬한 어플리케이션에서는 Full GC 수행 시에 스레드가 멈추는 시간을 최소화 했다고 합니다.

위 설정은 이클립스 성능에 대한 얘기입니다.




아래 설정은 실제 어플리케이션을 띄웠을 때 WAS성능 입니다.


[이클립스 톰캣 JVM 옵션 조정]

서버탭의 Tomcat을 더블 클릭 -> open launch configuration을 클릭합니다.




VM Arguments 탭에 아래 내용을 추가합니다.

-Xms1024m -Xmx2014m -XX:+UseG1GC -XX:MaxPermSize=512m



Xms 및 Xmx는 힙 영역 메모리설정, UseG1GC는 Garbage Collection 정책설정 MaxPermSize는 Permanent 영역 사이즈 입니다.




java class, method Code등이 저장 되는 영역 이다.

출처: http://liebus.tistory.com/29 [liebus]

출처: http://liebus.tistory.com/29 [liebus]

출처: http://liebus.tistory.com/29 [liebus]
java class, method Code등이 저장 되는 영역

출처: http://liebus.tistory.com/29 [liebus]

 개발하는데  소소한 도움이나마 되었으면 좋겠습니다.


감사합니다.



참고자료

http://d2.naver.com/helloworld/1329











+ Recent posts