Eclipse 설치 후, 최적화를 위하여 eclipse.ini 파일을 수정하려 한다.
eclipse 툴을 다운로드 받으면 찾을 수 있는 eclipse.ini 파일은 eclipse 툴 구동 시 읽어들이는 초기 설정 내역이 담겨 있는 파일이다.
현재 사용하고 있는 eclipse.ini 파일 내 설정은 아래와 같다.
1 #C:\Sample\jdk\jdk170_79\jre\bin\server\jvm.dll 2 -vm 3 C:/Sample/jdk/jdk170_79/bin/javaw.exe 4 -vmargs 5 -Dosgi.requiredJavaVersion=1.7 6 -Xverify:none 7 -XX:+UseParallelGC 8 -XX:-UseConcMarkSweepGC 9 -XX:+AggressiveOpts 10 -XX:PermSize=256M 11 -XX:MaxPermSize=256M 12 -XX:MaxNewSize=256M 13 -XX:NewSize=256M 14 -Xms1024m 15 -Xmx1024m 16 -Dfile.encoding=UTF-8 17 -Duser.name=wonnyyyy
|
각 라인 별 설정 내역을 짚고 넘어가려한다. 나중에 이 부분 설정을 건드려야 할 때 꼭 도움이 되길! ㅎ_ㅎ
1) #C:\Sample\jdk\jdk170_79\jre\bin\server\jvm.dll
- 우선 1번 라인 설정은 주석처리 되어 있는 상태인데, 3번 설정을 통해 JVM을 찾을 수 없을 때 1번 설정을 사용한다.
- 이클립스 시작 중 "Java was started but returned exit code=1" 에러가 발생하는 경우, -vm 옵션의 value 값을 1번과 같이 바꿔준다. (path to jvm.dll)
(차장님이 3번 설정이 바라보는 곳이 결국 1번이라고 하셨는데, 시간날 때 한 번 찾아서 정리해봐야겠다.)
2) -vm
C:/Sample/jdk/jdk170_79/bin/javaw.exe
- 2~3번 라인에서는 -vm 옵션을 통해 eclipse가 사용할 JDK 경로를 설정한다.
- '-vm' 옵션과 그의 value 값인 path는 별도 라인에 명시되어야 한다.
- value 값인 path는 Java home 디렉토리가 아니라, Java executable 까지에 대한 path를 명시해주어야 한다.(exact path to javaw.exe)
- '-vm' 옵션은 '-vmargs' 옵션보다 먼저 수행된다. ('-vmargs' 옵션이 수행된 후에는 바로 JVM이 실행된다)
- 당연한거지만, 32bit 용 eclipse.exe에서는 32bit 용 JVM 이 사용되어야 하고, 64bit 용 eclipse.exe에서는 64bit용 JVM이 사용되어야 한다.
3) -vmargs
-Dosgi.requiredJavaVersion=1.7
- 4번 라인에서는 해당 eclipse 실행을 위한 최소 Java 버전을 명시하고 있다. (eclipse 툴 버전별로 최소 요구 Java 버전 확인 할 것)
- 참고로 '-vmargs' 옵션은 JVM의 operation을 커스터마이징 하기 위한 설정이다. 설정 옵션들 중 가장 마지막에 오게 하기.
4) -Xverify:none
- 초기 구동 시 클래스의 유효성 검사를 skip 하겠다는 뜻. 구동 시간이 빨라진다.
5) -XX:+UseParallelGC
- 병렬 GC 사용 설정. 병렬 처리로 인한 처리 속도 향상.
6) -XX:-UseConcMarkSweepGC
- 병행 Mark sweep GC 수행을 통해 이클립스 GUI 의 응답속도 향상. (mark sweep GC는 GC 수행 방법 중 하나..자세한 설명은 별도 검색)
7) -XX:+AggressiveOpts
- 컴파일러의 소수점 최적화 기능 설정....이라는데 무슨말인지 잘 이해가 안된다.
8) -XX:PermSize=256M
- permanent generation의 크기 설정. 즉, 클래스와 메서드를 위한 공간. JDK 7 기준, permanent generation 공간은 GC가 일어나지 않는다.
9) -XX:MaxPermSize=256M
- permanent generation의 최대 크기 설정(클래스와 메서드를 위한 공간). OOM 발생 시 이부분을 늘려주는 것을 권장. 메모리의 최소와 최대 값을
같게 설정하면 힙메모리 영역의 변경이 없어 속도를 향상시킬 수 있다.
10) -XX:MaxNewSize=256M
-XX:NewSize=256M
- new generation의 크기 설정. 즉, 새로 생성되는 객체들을 위한 공간. 어플리케이션 내 새로 생성되는 객체들은 주로 생성 후 얼마 지나지 않아
사용하지 않게 되는 경우가 많다. 때문의 new generation 영역의 크기가 너무 크면 GC 호출이 잘 일어나지 않으며, 호출 시간도 오래 걸리게 된다.
사이즈 조절 주의!
11) -Xms1024m
-Xmx1024m
- Xms는 eclipse가 사용하는 최소 heap memory 크기
- Xmx는 eclipse가 사용하는 최대 heap memory 크기
- 메모리의 최소와 최대 값을 같게 설정하면 힙메모리 영역의 변경이 없어 속도를 향상시킬 수 있다.
- heap size를 1024m 로 설정하면, eclipse가 컴퓨터 상의 메모리 중 1024m를 자기 영역으로 확보하므로, 다른 작업들을 하고 있을 경우,
메모리가 부족할 수 있다. 상황에 따라 메모리 크기를 적절하게 설정해주어야 한다.
- 권장 사이즈
1G 이하 메모리의 컴퓨터: -Xms256m -Xmx256m
2G ~ 3G 메모리의 컴퓨터: -Xms512m -Xmx512m
4G 이상 메모리의 컴퓨터: -Xms1024m -Xmx1024m
12) -Dfile.encoding=UTF-8
- JVM을 통한 입출력으로 변환되는 데이터는 이 옵션을 통해 지정된 언어로 인코딩 된다. 위의 설정과 같이 UTF-8로 지정하면
명시적으로 UTF-8 charset을 사용하게 된다.
- eclipse에서 다루는 파일들의 기본 문자셋 지정하는 옵션
** 설정 완료 후, eclipse 에서 window > preferences > general > show heap status 클릭하면 eclipse 우측 하단에서
ini 파일에서 설정했던 heap size를 확인할 수 있다.
이 설정파일 내용을 정리하다보니 JVM 메모리 구조를 정확히 알아놔야겠다는 생각이 든다.. 다음에 정리해놔야지 이부분!
__________________________________________________________________________________________________________________________________________________________
** 본 포스팅에 대해 수정해야할 부분이나 추가 의견 등이 있으신 분들은 댓글 달아주세요. 언제나 환영입니다 :)
** 본 포스팅은 아래의 reference 들을 참고하여 내용을 덧붙인 글입니다. 혹시, 문제가 되는 경우 알려주시면 조치하도록 하겠습니다.
** 본 포스팅을 reference 자료로 참고하실 분들은 출처를 꼭 밝혀주시기 바랍니다.
- http://androidhuman.com/514
- https://wiki.eclipse.org/Eclipse.ini
- http://differentcolor.tistory.com/entry/%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4-STS-%EC%84%A4%EC%A0%95