넷빈즈 성능 향상 - 퍼포먼스 튜닝 팁 ( NetBeans performance Tuning Tip )

이클립스 퍼포먼스 팁 이란 포스팅을 통해 이클립스의 성능향상을의한 몇가지 방법을 소개했는데요..
이번에는 제가 좋아하는 Netbeans에도 성능향상 팁을 소개 하도록 하겠습니다.

넷빈즈의 경우 넷빈즈 가동시 jvm옵션을 추가 하거나 netbeans.conf 파일을 수정함으로써 성능 향상을 꾀할 수 있는데요..

넷빈즈 기동시 jvm옵션을 주는 방법은
    유닉스 계열이라면
       ./netbeans -J-Xmx256m 

    윈도우즈 계열이라면
        netbeans.exe -J-Xmx256m

와 같이 실행 하면 됩니다.
netbeans.conf  파일의 수정은 [넷빈즈 설치 디렉토리]/etc ( C:\Program Files\netbeans-5.5\etc )
아래에 netbeans.conf 파일을 편집기로 열어 수정하시면 됩니다.

그럼, 적용가능한 명령 옵션을 설명 드리겠습니다.


일반적으로 쓸만한 옵션들

  • -J-Xverify:none - 자바 바이트코드 검증을 하지 않습니다. 그럼으로써 클래스로딩 속도를 올릴 수 있습니다.
    이 옵션으로 넷빈즈 기동 시간을 줄일 수 있습니다. 이 옵션을 사용하지 않을 이유가 없죠.
  • -J-Xms32m - 이 옵션을 통해 자바 버추얼머신은 최소한의 힙 사이즈 32메가바이트를 확보하고 시작합다.
    이 옵션으로 (필요한 경우 수행하게되는) 메모리 힙사이즈를 늘려가는 작업을 줄일 수 있으므로 이 옵션으로 넷빈즈 기동시간을 줄일 수 있습니다. 
  • -J-Xmx256m - 이 옵션은 자바 버추얼 머신이 다룰 수 있는 최대 힙 메모리를 지정합니다. 초기값은 128메가
    이지만 시스템에 여분의 메모리용량이 있다면 이 값을 늘여서 넷빈즈의 성능 향상을 꾀 할 수 있습니다.
    Note: 물리적인 메모리 용량에 근접하거나 그보다 큰 값을 세팅하진 마세요. 그럴경우 하드디스트 스왑이 일어나기 때문에 성능이 더 떨어지게 됩니다.


    좀 더 색다른 옵션들

  • -J-XX:+UseConcMarkSweepGC or -J-XX:+UseParNewGC - 가비지 컬렉션이 작업을 방해 하면
    이 옵션들을 바꿔가며 사용해 보실것을 권합니다. 이 옵션은 버추얼머신이 다른 알고리즘으로 major 가비지 콜렉션을 동작하게 합니다.
    이 GC옵션과 함께  -J-XX:+CMSClassUnloadingEnabled 과 -J-XX:+CMSPermGenSweepingEnabled 옵션을
    추가 할 수 있습니다. 이는 클래스 unloading기능을 활성화 합니다.
    (위에 소개한 GC옵션을 사용할 경우 클래스 언로딩기능은 디폴트로 비활성화 됩니다.)
  • -XX:+UseAdaptiveSizePolicy - 이 옵션으로 가비지 콜렉션 성능과 메모리 풋프린트 성능을 향상 시켜 줄 수 있습니다.
    이는 JDK 5.0에서 garbage collector ergonomics의 구현물 중 일부 입니다.
  • -J-XX:+UseParallelGC - 고용량 메모리를 장착한 단일 프로세스 시스템에서 테스트 한 결과,
    이 옵션을 사용 함으로써  minor 가비지 콜렉션의 주기를 줄일 수 있습니다.  
    Note: 이 옵션은  -J-XX:+UseConcMarkSweepGC 옵션과 상호 배타적인 옵션입니다. .
  • -J-XX:+PrintGCDetails - 이 옵션은  -J-verbose:gc 과 유사하여 성능을 향상 하진 않지만 퍼포먼스 튜닝에 유용한
    시스템 진단 데이타를 제공 합니다. 또다른 방법으로는 다른 모니터링 툴이나 넷빈즈 프로파일러를 사용하는 것입니다. 
  • -J-Djava.net.preferIPv4Stack=true - 이 옵션은 네트워크 코드에서 IPv6 stack의 사용을 제한하고 그럼으로써
    inet address 를 해석 시간을 줄일 수 있습니다. 이 옵션은 시스템에  IPv6 이 설치는 되어 있지만 사용하지 않을경우에만 유용합니다.
    Note: 이하의 링크에는  IPv6 와 관련한 다른 문제들을 소개하고 있습니다.- 예제 보기 discussion on interaction between fwbuilder and Java apps


    드라마틱한 GUI성능향상

  • -Dsun.java2d.opengl=true - OpenGL을 지원하는 hardware-accelerator 에서 Java 2D 가 OpenGL가속을 사용하도록 합니다. 
    JDK5.0 의 새로운 기능에 대한 상세 설명은 Java 2D(TM) Technology documentation. 를 참조 하세요.
  • -Dsun.java2d.d3d=false - 이 옵션으로 몇몇 구형 하드웨어에 대한 DirectDraw 문제와 성능 문제를 해결 할 수 있습니다.
  • -Dawt.nativeDoubleBuffering=true - 이 옵션은 Swing이 OS의 double buffering 기능을 활용 할 수 있도록 해 줍나다.
    X의 터미널 서버등에서는 동작하지 않겠지만 로컬 Swing프로그램에서는 매우 유용한 옵션이 될 것입니다.
  • Font anti-aliasing 스윙 위젯은  -Dswing.aatext=true 옵션으로 폰트 안티엘리어싱 기능을 켤 수 있습니다.
    이 옵션은 리눅스 시스템에서  J2D_PIXMAPS=shared 옵션과 함께 사용함으로써 성능 향상을 꾀할 수 있습니다.
    (이 옵션은 현재 넷빈즈 런처(platform5/lib/nbexec)에의해 넷빈즈 구동시 디폴트 옵션으로 채택되어 있으므로 특별히 세팅하지 않아도 됩니다. )




  • 2007/06/19 18:32 2007/06/19 18:32
    Trackback Address:이 글에는 트랙백을 보낼 수 없습니다