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



+ Recent posts