넷빈 6.5 에서 profiler 사용하기 - 01
Written on 오전 4:33 by 강여사(J.Y.Kang)
안녕하세요~ 강여사입니다. 요근래 제가 좀 바빠서리..--; (뭐 지금이라고 안 바쁜건 아니지만..ㅠㅠ 약속한게 있어서리 최우선으로~~ 오호홍~)
우선, 프로파일러(profiler)는 개발자들에게 어플리케이션 실행 동작에 대한 중요한 정보를 제공하면서, 손쉽게 쓰레드 상태, CPU 성능, 그리고 어플리케이션 메모리 상태 등을 모니터하면서 이에 대한 수정 작업을 제공하는 도구입니다.
넷빈도 이러한 프로파일러가 넷빈 6.x 이전에는 플러그인 상태로 지원되다가, 넷빈 6.x 이후에는 기본팩에 포함시켜 넷빈 프로젝트를 바로 프로파일링을 할 수 있도록 지원해주고 있습니다.
특히나 넷빈 6.X 의 세부 버전에서도 각각 조금씩 새로운 기능들이 추가되고 또 속도 등의 이슈는 나날이 버전업되고 있습니다. (자세한 사항은 항상 넷빈 홈 페이지의 releases 확인 요망 ㅋㅋ) 저야 늘~ 그러하듯 시작~ 스따아트~ 소개~를 목적으로 가비얍게 다루는~~
그리하야 이번 게시물에는 넷빈에서 프로파일러를 어떻게 시작하는 지 그리고 어떤 것들이 있는지 일단 1탄으로 이야기해보도록 하겠습니다.
우선 간단한 자바 어플리케이션을 올립니다. (여기서는 넷빈 안에 있는 sample 프로젝트로 하겠습니다)
new project
Samples 안의 java - Anagram Game 선택
next
적당한 경로에 넣기
finish
그럼 우선 정확한 프로파일링 결과를 얻기 위해서는 자바 플랫폼에 대한 측정 데이터가 있어야 합니다.
만약 처음으로 프로파일링 툴을 실행하거나, 아니면 이런 측정 데이터가 없다면, 일단 플랫폼을 위한 calibration 이 최우선적으로 진행되어야 합니다.
Profile - Advanced commands - Run Calibration
그럼 해당 프로젝트의 플랫폼이 선택됩니다. (당빠 이러한 작업은 JMX 등을 지원하는 JDK 5 이상에서만 가능합니다. 현재 작업중인 제 JDK 는 6 버전입니다.)
OK
프로젝트 프로파일링 시작하기
방법 1. Profile - Profile Main Project (아래그림참고)
방법 2. 프로젝트(AnagramGame) 에서 오른쪽 마우스 - profile
넷빈에서는 프로파일링을 진행하게되면 프로젝트와 프로파일링을 통합시키기도 합니다. 즉, 프로파일링 세션의 시작과 함께 어플리케이션을 시작하고, 프로파일링 세선이 종료되면 어플리케이션도 종료되게~
이러한 통합은 당연히 프로젝트의 구성파일(build.xml)을 수정해야하기때문에 이 작업에 대한 동의여부를 묻습니다. (팝업창)
이렇게 통합하게되면 기존 build.xml 은 build-before-profiler.xml 으로 바뀌고 새로운 build.xml 이 자동생성됩니다.
나중에 이일을 원래대로 복구하려면 Profile-advanced command 에서 unintegrate profile from the main menu 를 선택하면 됩니다.
ok
그럼 다음 그림이 보이는데 다음 3가지로 프로파일링을 진행할 수 있습니다.
즉,~
프로파일링 작업
결과
어플리케이션 모니터하기
쓰레드 액티비티와 메모리 할당을 포함, 대상 JVM의 등록정보에 대한 고-레벨정보를 얻기 위하여 이것을 선택하십시오
CPU 성능 분석하기
메소드를 수행하는데 대한 시간, 호출된 메소드 횟수를 포함한 어플리케이션 성능에 대한 자세한 정보를 얻기 위하여 이것을 선택하십시오.
메모리 사용량 분석하기
객체 할당과 가비지 컬렉션에 대한 자세한 데이터를 얻기 위하여 이것을 선택하십시오.
각각을 선택하면 선택된 박스가 조금 커집니다.
그럼 우선 Monitor ... 를 선택하고 실행해 보겠습니다.
Monitor 클릭 - run
통합으로 진행되기때문에 해당 어플리케이션(anagram game)이 실행되고 왼쪽에 새로이 profiler 패널이 추가됩니다.
실시간으로 모니터링 데이터의 개요를 재빨리 얻기 위해 Telemetry Overview (Control 메뉴들중 맨 오른쪽) 을 사용할 수 있다.
(output이 보이는 오른쪽 아래쪽에 3개의 내용이 한꺼번에 나타납니다).
계속..