JProfiler 도움말

IDE 통합

애플리케이션을 프로파일링할 때, JProfiler의 뷰에 나타나는 메서드와 클래스는 종종 소스 코드를 직접 확인해야만 답을 알 수 있는 질문을 유발합니다. 이를 위해 JProfiler는 내장 소스 코드 뷰어를 제공하지만, 기능이 제한적입니다. 또한 문제가 발견되면, 일반적으로 다음 단계는 해당 코드를 수정하는 것입니다. 이상적으로는 JProfiler의 프로파일링 뷰에서 IDE로 바로 이동할 수 있는 경로가 있어야 하며, 이를 통해 별도의 수동 탐색 없이 코드를 확인하고 개선할 수 있습니다.

IDE 통합 설치

JProfiler는 IntelliJ IDEA, Eclipse, NetBeans용 IDE 통합 기능을 제공합니다. IDE 플러그인을 설치하려면, 메인 메뉴에서 Session→IDE Integrations을 실행하세요. IntelliJ IDEA의 플러그인 설치는 IDE의 플러그인 관리 기능을 통해 진행되며, 다른 IDE의 경우 JProfiler가 직접 플러그인을 설치합니다. 설치 관리자는 IDE 플러그인 업데이트를 JProfiler 설치와 함께 쉽게 할 수 있도록 이 작업을 제공합니다. 통합 마법사는 플러그인을 JProfiler의 현재 설치 디렉터리와 연결합니다. IDE 플러그인 설정에서 언제든지 사용 중인 JProfiler 버전을 변경할 수 있습니다. 플러그인과 JProfiler GUI 간의 프로토콜은 하위 호환성을 제공하며, 이전 버전의 JProfiler와도 함께 동작할 수 있습니다.

IntelliJ IDEA 통합은 플러그인 관리자를 통해서도 설치할 수 있습니다. 이 경우, 처음 프로파일링을 시도할 때 JProfiler 실행 파일의 위치를 입력하라는 메시지가 표시됩니다.

플랫폼에 따라 JProfiler 실행 파일의 위치가 다릅니다. Windows에서는 bin\jprofiler.exe, Linux 또는 Unix에서는 bin/jprofiler이고, macOS에서는 IDE 통합을 위해 JProfiler 애플리케이션 번들 내에 Contents/Resources/app/bin/macos/jprofiler.sh라는 특별한 헬퍼 셸 스크립트가 있습니다.

소스 코드 네비게이션

JProfiler에서 클래스명이나 메서드명이 표시되는 모든 곳의 컨텍스트 메뉴에는 Show Source 액션이 포함되어 있습니다.

세션이 IDE에서 시작되지 않은 경우, 내장 소스 코드 뷰어가 표시되며, 이는 컴파일된 클래스 파일의 라인 넘버 테이블을 사용해 메서드를 찾습니다. 소스 파일은 루트 디렉터리 또는 포함된 ZIP 파일이 애플리케이션 설정에 구성되어 있을 때만 찾을 수 있습니다.

소스 코드 표시와 함께, jclasslib bytecode viewer를 기반으로 한 바이트코드 뷰어가 컴파일된 클래스 파일의 구조를 보여줍니다.

세션이 IDE에서 시작된 경우, 내장 소스 코드 뷰어는 사용되지 않으며 Show Source 액션은 IDE 플러그인으로 위임됩니다. IDE 통합은 실행된 프로파일링 세션, 저장된 스냅샷 열기, 실행 중인 JVM에 attach하는 기능을 지원합니다.

라이브 프로파일링 세션의 경우, IDE에서 애플리케이션을 실행하거나 디버깅하는 것과 유사하게 profiled 애플리케이션을 시작합니다. JProfiler 플러그인은 프로파일링을 위한 VM 파라미터를 삽입하고, JProfiler 창을 연결합니다. JProfiler는 별도의 프로세스로 실행되며, 필요 시 플러그인에 의해 시작됩니다. JProfiler에서 발생하는 소스 코드 네비게이션 요청은 IDE의 연결된 프로젝트로 전송됩니다. JProfiler와 IDE 플러그인은 작업 표시줄 항목이 깜빡이지 않고, 하나의 프로세스를 다루는 것처럼 창 전환이 매끄럽게 이루어지도록 협력합니다.

세션을 시작할 때, "Session startup" 다이얼로그에서 모든 프로파일링 설정을 구성할 수 있습니다. 실행된 세션에 사용된 프로파일링 설정은 IDE 통합에 따라 프로젝트별 또는 실행 구성별로 JProfiler에 의해 기억됩니다. 세션이 처음 profiled될 때, IDE 플러그인은 소스 파일의 패키지 계층에서 최상위 클래스들을 기준으로 profiled 패키지 목록을 자동으로 결정합니다. 이후 언제든지 세션 설정 다이얼로그의 필터 설정 단계로 이동해 리셋 버튼을 눌러 이 계산을 다시 수행할 수 있습니다.

스냅샷의 경우, IDE 통합은 IDE 내에서 File→Open 액션으로 스냅샷 파일을 열거나, 프로젝트 창에서 더블 클릭하여 설정할 수 있습니다. 이후 JProfiler에서의 소스 코드 네비게이션은 현재 프로젝트로 연결됩니다. 마지막으로, IDE 플러그인은 IDE에 Attach to JVM 액션을 추가하여 실행 중인 JVM을 선택하고 IDE로 소스 코드 네비게이션을 할 수 있도록 지원합니다. 이는 스냅샷과 유사한 방식입니다.

때로는 특정 클래스나 메서드 없이 IDE로 전환하고 싶을 수 있습니다. 이를 위해 JProfiler 창의 툴바에는 IDE 통합으로 열린 프로파일링 세션에서 Activate IDE 버튼이 표시됩니다. 이 액션은 F11 키에 바인딩되어 있으며, IDE 내의 JProfiler 활성화 액션과 동일하므로, 동일한 키 바인딩으로 IDE와 JProfiler 간을 자유롭게 전환할 수 있습니다.

IntelliJ IDEA 통합

IntelliJ IDEA에서 애플리케이션을 프로파일링하려면, Run 메뉴에서 프로파일링 명령 중 하나를 선택하거나, 메인 툴바의 실행 또는 디버그 액션 옆 드롭다운 메뉴에서 "Profile with JProfiler" 액션을 선택하세요. JProfiler는 애플리케이션 서버를 포함한 대부분의 실행 구성 타입을 프로파일링할 수 있습니다.

JProfiler 플러그인은 실행 구성에 즉시 보이지 않는 추가 설정을 제공합니다. 이 설정에 접근하려면 "Modify options" 드롭다운에서 "Profile" 옵션을 선택하세요. 그 외의 모든 프로파일링 설정은 JProfiler 창의 시작 다이얼로그에서 구성할 수 있습니다.

프로파일링 세션이 시작되면, 출력은 별도의 JProfiler 도구 창에 표시됩니다. 해당 도구 창은 일반 실행 도구 창처럼 콘솔 출력을 보여주며, JProfiler UI에 연결한 후 사용할 수 있는 "JProfiler" 탭이 함께 제공됩니다:

JProfiler 도구 창은 IntelliJ IDEA에서 JProfiler 스냅샷을 열거나, "Attach to JVM with JProfiler" 액션으로 실행 중인 JVM에 attach할 때도 표시됩니다.

"JProfiler" 탭에는 CPU 데이터, 할당 데이터, 프로브 이벤트에 대한 데이터 녹화 시작 및 중지 액션이 포함되어 있습니다. 또한, JProfiler 창으로 전환하는 액션도 제공됩니다. JProfiler 창에도 IDEA 창으로 전환하는 유사한 액션이 있어 두 개의 별도 창을 편리하게 오갈 수 있습니다. JProfiler에서 IntelliJ IDEA로의 정밀한 소스 코드 네비게이션은 Java와 Kotlin에서 구현되어 있습니다.

프로파일링 정보는 일반적으로 JProfiler 창에 표시되지만, CPU 그래프 데이터는 IntelliJ IDEA UI에도 통합되어 소스 코드에서 직접 데이터를 확인할 수 있습니다. IntelliJ IDEA에서 "Apply graph" 액션을 사용하거나 JProfiler에서 CPU 그래프를 생성하여 IntelliJ IDEA 내에서 CPU 데이터를 표시할 수 있습니다. 스레드 선택과 같은 고급 파라미터를 구성하거나 호출 트리 뷰의 루트, 호출 트리 제거, 호출 트리 뷰 필터 설정을 사용하려면 JProfiler 창에서 그래프를 생성해야 합니다.

CPU 데이터가 적용되면, "JProfiler" 탭에는 녹화된 메서드 목록이 표시됩니다. 메서드를 더블 클릭하면 해당 소스 코드로 이동합니다. 소스 코드 에디터의 거터에는 들어오는 호출과 나가는 호출을 나타내는 화살표가 추가됩니다.

거터 아이콘을 클릭하면 팝업 창에 들어오는 메서드 또는 나가는 메서드가 표시되며, 녹화된 시간이 바 차트로 함께 나타납니다. 팝업의 행을 클릭하면 해당 메서드로 이동합니다.

또한, 팝업 하단에는 대상 메서드의 총 녹화 시간과 호출 횟수가 표시됩니다. 팝업 우측 하단의 "Show in JProfiler" 드롭다운은 JProfiler UI로의 컨텍스트 기반 네비게이션 액션을 제공합니다. 선택한 노드 또는 해당 호출 트리 분석을 메서드 그래프에서 표시할 수 있습니다. 나가는 호출의 경우 "Cumulated outgoing calls" 분석이, 들어오는 호출의 경우 "Backtraces" 분석이 제공됩니다.

동일한 네비게이션 액션은 "JProfiler" 탭의 메서드 테이블 컨텍스트 메뉴에서도 사용할 수 있습니다:

JProfiler 플러그인은 "Attach to JVM with JProfiler" 액션에 대한 툴바 빠른 액션을 제공하며, 이를 메인 툴바에 추가할 수 있습니다. 이 액션을 통해 이미 실행 중인 프로세스에 attach하여 JProfiler UI에서 IntelliJ IDEA로의 소스 코드 네비게이션과 소스 코드 에디터 내의 인라인 CPU 그래프 데이터를 모두 사용할 수 있습니다:

액션 버튼이 추가되면 다음과 같이 표시됩니다:

JProfiler의 모든 액션에 대한 키 바인딩은 IntelliJ IDEA의 "Keymap" 설정에서 사용자 정의할 수 있습니다. 충돌 없는 키보드 단축키가 제한적으로 제공되기 때문에, 소스 코드 에디터에서 JProfiler UI로의 네비게이션 액션은 체인 단축키로 구성되어 있습니다. 먼저 Ctrl-Alt-Shift-O를 누르고, 이후 다른 키를 눌러 네비게이션 액션을 선택합니다. 이 기능을 자주 사용한다면 더 간단한 키보드 단축키를 할당하는 것이 좋습니다.

IDE 설정의 Tools->JProfiler 페이지에서 사용 중인 JProfiler 실행 파일과, 새로운 프로파일링 세션마다 항상 새 창을 열지 여부를 조정할 수 있습니다.

Eclipse 통합

Eclipse 플러그인은 테스트 실행 구성과 WTP 실행 구성을 포함한 대부분의 일반적인 실행 구성 타입을 프로파일링할 수 있습니다. Eclipse 플러그인은 전체 Eclipse SDK에서만 동작하며, Eclipse 프레임워크의 부분 설치에서는 동작하지 않습니다.

Eclipse에서 애플리케이션을 프로파일링하려면, Run 메뉴에서 프로파일링 명령 중 하나를 선택하거나, 해당 툴바 버튼을 클릭하세요. 프로파일 명령은 Eclipse의 디버그 및 실행 명령과 동일한 인프라의 일부이며, Run→Attach JProfiler to JVM 메뉴 항목만 JProfiler 플러그인에 의해 추가됩니다.

Java 퍼스펙티브에서 Run→Profile ... 메뉴 항목이 보이지 않는 경우, Window→Perspective→Customize Perspective에서 "Profile" 액션을 활성화하세요. Action Set Availability 탭을 앞으로 가져온 후 Profile 체크박스를 선택하면 됩니다.

JProfiler 실행 파일의 위치를 포함한 여러 JProfiler 관련 설정은 Eclipse의 Window→Preferences→JProfiler에서 조정할 수 있습니다.

VS Code 통합

VS Code 확장은 Enable Profiling with JProfiler 액션을 추가합니다. 이 액션을 실행하면, 디버그 및 실행 액션이 Java 실행 구성에 대해 프로파일링을 시작합니다. JProfiler가 시작되고, 프로파일링 설정을 구성할 수 있는 세션 시작 다이얼로그가 표시됩니다. 세션 시작 다이얼로그를 확인하면 애플리케이션이 시작됩니다.

Disable Profiling with JProfiler 액션을 사용하면 실행 및 디버그 액션의 기본 동작이 복원됩니다. 프로파일링 모드 변경에 대한 알림은 VS Code의 에디터 우측 하단에 토스트 메시지로 표시됩니다. Enable Profiling with JProfilerDisable Profiling with JProfiler 모두 동일한 기본 키 바인딩을 가지므로, 프로파일링 모드를 토글하는 데 사용할 수 있습니다.

이미 실행 중인 JVM을 프로파일링하려면 Attach to a Running JVM with JProfiler 액션을 사용하세요.

JProfiler의 소스 네비게이션 액션은 VS Code에서 해당 소스 코드를 보여줍니다. JProfiler 스냅샷에 대해 VS Code로 소스 네비게이션을 하려면, VS Code 내에서 File→Open으로 스냅샷을 여세요.

NetBeans 통합

NetBeans에서는 표준, 자유 형식, exec Maven 플러그인을 사용하는 Maven 프로젝트를 프로파일링할 수 있습니다. NetBeans에서 애플리케이션을 프로파일링하려면, Run 메뉴에서 프로파일링 명령 중 하나를 선택하거나, 해당 툴바 버튼을 클릭하세요. 애플리케이션을 다른 방식으로 시작하는 Maven 프로젝트 및 Gradle 프로젝트의 경우, 프로젝트를 정상적으로 시작한 후 Profile→Attach JProfiler To A Running JVM 액션을 사용하세요.

자유 형식 프로젝트의 경우, 프로파일링을 시도하기 전에 애플리케이션을 한 번 디버깅해야 합니다. 이는 nbproject/ide-targets.xml 파일이 디버그 액션에 의해 설정되기 때문입니다. JProfiler는 여기에 "profile-jprofiler"라는 타겟을 추가하며, 디버그 타겟과 동일한 내용을 갖고, 필요에 따라 VM 파라미터를 수정하려고 시도합니다. 자유 형식 프로젝트 프로파일링에 문제가 있다면, 이 타겟의 구현을 확인하세요.

NetBeans에서 통합 Tomcat 또는 다른 Tomcat 서버를 구성해 웹 애플리케이션을 프로파일링할 수 있습니다. 메인 프로젝트가 웹 프로젝트인 경우, Profile main project with JProfiler를 선택하면 Tomcat 서버가 프로파일링 모드로 시작됩니다.

NetBeans에서 번들된 GlassFish Server를 사용하고, 메인 프로젝트가 GlassFish Server를 사용하도록 설정된 경우, Profile main project with JProfiler를 선택하면 애플리케이션 서버가 프로파일링 모드로 시작됩니다.

JProfiler 실행 파일의 위치와 새로운 JProfiler 창을 여는 정책은 옵션 다이얼로그의 Miscellaneous→JProfiler에서 조정할 수 있습니다.