JProfiler 도움말

IDE 연동

애플리케이션을 프로파일링할 때 JProfiler의 뷰에 나타나는 메서드와 클래스는 종종 소스 코드를 확인해야만 해결할 수 있는 의문을 남깁니다. JProfiler는 이러한 목적을 위해 내장 소스 코드 뷰어를 제공하지만 기능이 제한적입니다. 또한 문제가 발견되면 보통 다음 단계는 해당 문제를 일으키는 코드를 편집하는 것입니다. 이상적으로는 JProfiler의 프로파일링 뷰에서 IDE로 직접 연결되는 경로가 있어 수동으로 찾을 필요 없이 코드를 확인하고 개선할 수 있어야 합니다.

IDE 연동 설치

JProfiler는 IntelliJ IDEA, VS Code, Eclipse 및 NetBeans를 위한 IDE 연동을 제공합니다. IDE 플러그인을 설치하려면 메인 메뉴에서 Session→IDE Integrations를 실행하십시오. IntelliJ IDEA용 플러그인 설치는 IDE의 플러그인 관리를 통해 수행되며, 다른 IDE의 경우 플러그인이 JProfiler에 의해 직접 설치됩니다. 설치 관리자에서도 JProfiler 설치와 함께 IDE 플러그인을 쉽게 업데이트할 수 있도록 이 작업을 제공합니다. 연동 마법사는 플러그인을 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에서 프로파일된 애플리케이션을 시작합니다. 그러면 JProfiler 플러그인이 프로파일링을 위한 VM 매개변수를 삽입하고 JProfiler 창을 여기에 연결합니다. JProfiler는 별도의 프로세스로 실행되며 필요한 경우 플러그인에 의해 시작됩니다. JProfiler의 소스 코드 탐색 요청은 IDE의 연결된 프로젝트로 전송됩니다. JProfiler와 IDE 플러그인은 마치 단일 프로세스를 다루는 것처럼 작업 표시줄 항목이 깜빡이지 않고 매끄럽게 창을 전환할 수 있도록 상호 작용합니다.

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

스냅샷의 경우 File→Open 액션을 사용하거나 프로젝트 창에서 스냅샷 파일을 더블 클릭하여 IDE 내에서 열면 IDE 연동이 설정됩니다. 그러면 JProfiler에서의 소스 코드 탐색이 현재 프로젝트로 연결됩니다. 마지막으로 IDE 플러그인은 스냅샷 메커니즘과 유사하게 실행 중인 JVM을 선택하고 IDE로의 소스 코드 탐색 기능을 제공하는 Attach to JVM 액션을 IDE에 추가합니다.

특정 클래스나 메서드를 염두에 두지 않고 단순히 IDE로 전환하고 싶을 때도 있습니다. 이를 위해 JProfiler 창의 도구 모음에는 IDE 연동으로 열린 프로파일링 세션에 대해 표시되는 Activate IDE 버튼이 있습니다. 이 액션은 IDE의 JProfiler 활성화 액션과 마찬가지로 F11 키에 바인딩되어 있으므로, 동일한 키 바인딩으로 IDE와 JProfiler 사이를 자유롭게 전환할 수 있습니다.

IntelliJ IDEA 연동

IntelliJ IDEA에서 애플리케이션을 프로파일링하려면 Run 메뉴에서 프로파일링 명령 중 하나를 선택하거나, 메인 도구 모음의 실행 또는 디버그 액션 옆에 있는 드롭다운 메뉴를 클릭하여 "Profile with JProfiler" 액션을 선택하십시오. JProfiler는 애플리케이션 서버를 포함하여 IntelliJ IDEA의 대부분의 실행 구성 유형을 프로파일링할 수 있습니다.

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 창으로 다시 전환하는 유사한 액션이 포함되어 있어 두 개의 분리된 창으로 편리하게 작업할 수 있습니다. Java 및 Kotlin에 대해 JProfiler에서 IntelliJ IDEA로의 정밀한 소스 코드 탐색이 구현되어 있습니다.

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

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

거터 아이콘을 클릭하면 기록된 시간을 보여주는 막대 차트와 함께 들어오거나 나가는 메서드가 팝업 창에 표시됩니다. 팝업에서 행을 클릭하면 해당 메서드로 이동합니다.

또한 대상 메서드의 총 기록 시간과 호출 횟수가 팝업 하단에 표시됩니다. 팝업 오른쪽 하단의 "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-0을 누른 다음 다른 키를 눌러 탐색 액션을 선택하는 체인 단축키로 설정되어 있습니다. 이 기능을 자주 사용하는 경우 더 간단한 키보드 단축키를 할당하는 것이 좋습니다.

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

Eclipse 연동

Eclipse 플러그인은 테스트 실행 구성 및 WTP 실행 구성을 포함하여 가장 일반적인 실행 구성 유형을 프로파일링할 수 있습니다. Eclipse 플러그인은 전체 Eclipse SDK에서만 작동하며 Eclipse 프레임워크의 부분 설치 환경에서는 작동하지 않습니다.

Eclipse에서 애플리케이션을 프로파일링하려면 Run 메뉴에서 프로파일링 명령 중 하나를 선택하거나 해당 도구 모음 버튼을 클릭하십시오. 프로파일 명령은 Eclipse의 디버그 및 실행 명령과 동일하며 Eclipse 인프라의 일부이지만, JProfiler 플러그인에 의해 추가되는 Run→Attach JProfiler to a Running JVM 메뉴 항목은 예외입니다.

Java 퍼스펙티브에 Run→Profile ... 메뉴 항목이 없는 경우, Window→Perspective→Customize Perspective에서 Action Set Availability 탭을 앞으로 가져오고 Profile 체크박스를 선택하여 이 퍼스펙티브에 대한 "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 JProfiler와 Disable Profiling With JProfiler는 모두 동일한 기본 키 바인딩을 가지므로 프로파일링 모드를 토글하는 데 사용할 수 있습니다.

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

JProfiler의 소스 탐색 액션은 VS Code에서 해당 소스 코드를 표시합니다. JProfiler 스냅샷에 대해 VS Code로의 소스 탐색을 사용하려면 VS Code 내에서 File→Open으로 스냅샷을 여십시오.

NetBeans 연동

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

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

통합 Tomcat 또는 NetBeans에 구성된 다른 Tomcat 서버를 사용하여 web 애플리케이션을 프로파일링할 수 있습니다. 메인 프로젝트가 web 프로젝트인 경우 Profile main project with JProfiler를 선택하면 프로파일링이 활성화된 상태로 Tomcat 서버가 시작됩니다.

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

JProfiler 실행 파일의 위치와 새 JProfiler 창을 여는 정책은 옵션 대화상자의 Miscellaneous→JProfiler에서 조정할 수 있습니다.