참고 : http://wiki.eclipse.org/Eclipse.ini , http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html , http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
개요
Eclipse의 시작은 $ECLIPSE_HOME/eclipse.ini파일에 정의된 옵션으로 제어된다. 만약 $ECLIPSE_HOME이 정의되지 않았다면 Eclipse가 설치된 디렉토리(맥을 사용하고 있다면 Eclipse.app/Contents/MacOS 디렉토리를 참조하게 된다)의 eclipse.ini파일을 참조하게 된다.
eclipse.ini는 커맨드라인 옵션을 포함하는 텍스트 파일로 커맨드라인에 추가된 명령어들은 Eclipse가 시작되었을 때 사용된다. 여기에는 많은 옵션들이 존재하며 다음의 좌표를 참고할 수 있다.
*중요
- 각옵션과 옵션에 해당하는 각각의 변수들은 반드시 해당 라인에 위치해야 한다.
- -vmargs다음의 라인들은 JVM의 변수로 통과되어 지기 때문에 eclipse를 위한 변수나 옵션들은 반드시 -vmargs 앞에 위치해야한다(1번의 규칙과 비슷하다고 볼 수 있음)
JVM 지정하기
Eclipse 튜닝을 위해 가장 추천되는 방법으로는 Eclipse를 실행하기 위한 특정 JVM을 지정하는 것 이다. 이렇게 하는 것은 정확히 어떤 JVM에서 Eclipse가 동작하고 있는것인지를 보장해주며 시스템에대한 표준 JVM이 변경되는 것과 같은 시스템 변화에 대한 영향을 받지 않도록 하여준다(JVM은 여러개가 설치될 수 있고 어떤것을 시스템 표준으로 사용할지는 설정하기 나름임). 많은 사용자들이 기본값으로 어떤 JVM이 사용될거라는 것을 알고 있다고 생각하기 때문에 당황스러운 실수를 하기도 한다. eclipse.ini는 그런 문제에 대해 확신을 갖을 수 있도록 해줄 것 이다.
다음의 eclipse.ini의 예시는 -vm 옵션의 정확한 용법의 예를 보여주고 있다.
*주의 -vm 옵션의 형식과 관련해서 정확하게 기술하는 것이 무엇보다 중요하다.
- -vm 옵션과 해당하는 값(경로)는 반드시 다른 라인에 위치해야 한다.
- 값은 반드시 Java 홈 디렉토리만이 아닌 Java 실행을 위한 절대경로 혹은 상대경로이어야 한다.
- -vm 옵션은 반드시 -vmargs 옵션의 앞에서 선언 되어야 하며 -vmargs 다음에 오는 모든 값은 JVM으로 곧바로 전달된다.
다음은 eclipse.ini에 -vm 변수를 추가하고 최대 힙 공간을 증가시킨 예제이다.
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
–launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-product
org.eclipse.epp.package.java.product
–launcher.defaultAction
openFile
–launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
–launcher.XXMaxPermSize
256m
–launcher.defaultAction
openFile
-vm
C:JavaJDK1.6binjavaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx1024m
한가지 기억해야 할점은 이러한 옵션들에 대한 적절한 값이 운영체제나 Eclipse 패키지 버전에 따라 다를 수 있다는거다.
Java HotSpot VM 옵션
Java HotSpot VM 옵션들의 범주
- -X로 시작되는 옵션들은 비표준(모든 VM에 대해 지원되는 것을 보장하지 않음)이며 추후 JDK 릴리즈에서 별다른 공지 없이 변경될 수 있다.
- -XX로 정의되는 옵션들은 불안정한 옵션이며 마찬가지로 별다른 공지 없이 변경 될 수 있다.
1.3.0 이전의 JDK 사용자의 경우 Exact VM 플래그를 참고하여야 한다(Java HotSpot VM은 1.3.0이후에 도입되었음).
일부 유용한 -XX 옵션들
기본 값들은 Java SE6의 Solaris Sparc 버전에서 -server옵션 목록에 포함되며 일부 옵션들은 아키텍쳐/OS/JVM 버전에 따라 다양할 수 있다. 플렛폼 별로 갖는 다른 기본 값은 설명을 참고하면 된다.
- Boolean 옵션들은 -XX:+<option>을 이용해서 켜거나 -XX:-<option>을 이용해서 끌 수 있다.
- Numeric 옵션들은 -XX:<option>=<number>를 이용해서 설정할 수 있다. 이렇게 표기된 숫자들은 메가바이트에 대해 ‘m’ 또는 ‘M’을 붙여 표현할 수 있고 킬로바이트는 ‘k’ 또는 ‘K’ 그리고 기가바이트에 대해 ‘g’ 또는 ‘G’를 붙일 수 있다.(예를 들자면 32k는 32768과 같다)
- String 옵션들은 -XX:<option>=<string>을 이용해서 설정할 수 있다. 일반적으로 파일 또는 경로를 지정하거나 옵션에 해당되는 명령어들을 사용할 수 있다.
설명에 manageable이라는 플래그가 표시된 것은 JDK 관리 인터페이스(com.sun.management.HotSpotDiagnosticMXBean API)와 JConsole을 통해 동적으로 사용될 수 있다. Java SE 6 플렛폼 어플리케이션의 모니터링과 관리의 Figure 3에서 예를 보이고 있다. manageable 플래그는 jinfo-flag를 통해서 설정할 수도 있다.
다음의 옵션들은 다소 느슨한 기준으로 그룹지어져 각 카테고리에 포함되어 있다.(클릭하면 해당 리스트로 이동합니다)
- VM의 기본 동작을 변경하는 Behavioral 옵션들
- Garbage First(G1) 가비지 컬렉션 옵션들
- VM 퍼포먼스 튜닝에 사용 될 수 있는 다이얼스위치(knob) 역할을 하는 퍼포먼스 튜닝 옵션들
- 일반적인 추적을 가능하게 하거나 프린팅 또는 VM 정보를 내보낼 수 있는 디버깅 옵션들
Author Details
Linus Lee aka y1sh former ATiMania.com sysop during 2001-2012.
DevSecOps Engineer who likes tech, science, programming and solving problems 🙂