JProfiler 도움말

텔레메트리

프로파일링의 한 측면은 사용된 힙 크기와 같은 시간 경과에 따른 스칼라 측정값을 monitor하는 것입니다. JProfiler에서는 이러한 그래프를 텔레메트리라고 부릅니다. 텔레메트리를 관찰하면 프로파일된 소프트웨어를 더 잘 이해할 수 있고, 다양한 측정값에 걸쳐 중요한 이벤트를 연관지어 분석할 수 있으며, 예기치 않은 동작이 감지될 경우 JProfiler의 다른 뷰를 통해 더 심층적인 분석을 수행할 수 있습니다.

표준 텔레메트리

JProfiler UI의 "텔레메트리" 섹션에서는 여러 텔레메트리가 기본적으로 녹화됩니다. 대화형 세션의 경우 항상 활성화되어 있습니다. 일부 텔레메트리는 특별한 유형의 데이터가 녹화되어야 합니다. 이 경우 텔레메트리에 녹화 액션이 표시됩니다.

동일한 시간 축에서 여러 텔레메트리를 비교할 수 있도록 개요에서는 행 높이를 구성할 수 있는 여러 소형 텔레메트리를 상하로 표시합니다. 텔레메트리 제목을 클릭하면 전체 텔레메트리 뷰가 활성화됩니다. 예를 들어 선택한 텔레메트리를 나란히 연관지어 비교하고자 할 때 개요의 기본 텔레메트리 순서가 적합하지 않을 수 있습니다. 이 경우 개요에서 드래그 앤 드롭으로 순서를 재정렬할 수 있습니다.

전체 뷰는 현재 값이 포함된 범례를 표시하며 개요에 표시된 것보다 더 많은 옵션을 제공할 수 있습니다. 예를 들어 "메모리" 텔레메트리에서는 개별 메모리 풀을 선택할 수 있습니다.

JProfiler에는 JVM의 상위 레벨 시스템 및 주요 프레임워크의 이벤트를 녹화하는 수많은 프로브가 있습니다. 프로브에는 해당 프로브 뷰에 표시되는 텔레메트리가 있습니다. 이러한 텔레메트리를 시스템 텔레메트리와 비교하려면 선택한 프로브 텔레메트리를 최상위 텔레메트리 섹션에 추가할 수 있습니다. 툴바에서 텔레메트리 추가→프로브 텔레메트리 추가를 선택하고 하나 이상의 프로브 텔레메트리를 선택합니다.

추가된 각 프로브 텔레메트리는 텔레메트리 섹션에 고유한 뷰를 가지며 개요에도 표시됩니다.

프로브 텔레메트리가 추가된 후에는 프로브 데이터가 녹화된 경우에만 데이터가 표시됩니다. 그렇지 않은 경우 텔레메트리 설명에 녹화를 시작할 수 있는 인라인 버튼이 포함됩니다.

프로브 텔레메트리의 컨텍스트 메뉴에는 녹화 액션뿐만 아니라 해당 프로브 뷰를 표시하는 액션도 포함되어 있습니다.

프로브 뷰와 마찬가지로 녹화된 객체에 대한 VM 텔레메트리는 메모리 녹화에 의존하며, 녹화 버튼과 유사한 컨텍스트 메뉴를 제공합니다.

마지막으로 다른 뷰에서 선택된 스칼라 값을 monitor하는 "추적" 텔레메트리가 있습니다. 예를 들어 클래스 트래커 뷰에서는 클래스를 선택하고 시간 경과에 따른 해당 인스턴스 수를 monitor할 수 있습니다. 또한 각 프로브에는 선택한 핫스팟 또는 제어 객체를 monitor하는 "트래커" 뷰가 있습니다.

북마크

JProfiler는 모든 텔레메트리에 표시되는 북마크 목록을 유지 관리합니다. 대화형 세션에서는 북마크 추가 툴바 버튼을 클릭하거나 컨텍스트 메뉴의 여기에 북마크 추가 기능을 사용하여 현재 시간에 북마크를 추가할 수 있습니다.

북마크는 수동으로 생성할 수 있을 뿐만 아니라, 특정 녹화의 시작과 끝을 나타내기 위해 녹화 액션에 의해 자동으로 추가되기도 합니다. 트리거 액션이나 컨트롤러 API를 사용하면 프로그래밍 방식으로 북마크를 추가할 수 있습니다.

북마크에는 색상, 선 스타일 및 툴팁에 표시되는 이름이 있습니다. 기존 북마크를 편집하여 이러한 속성을 변경할 수 있습니다.

텔레메트리에서 여러 북마크를 우클릭하는 것이 너무 번거롭다면 메뉴에서 프로파일링→북마크 편집 액션을 사용하여 북마크 목록을 확인할 수 있습니다. 이곳에서 북마크를 HTML 또는 CSV로 내보낼 수도 있습니다.

커스텀 텔레메트리

자신만의 텔레메트리를 추가하는 방법에는 두 가지가 있습니다. JProfiler UI에서 스크립트를 작성하여 숫자 값을 제공하거나 숫자 MBean 속성을 선택하는 것입니다.

커스텀 텔레메트리를 추가하려면 "텔레메트리" 섹션에 표시되는 텔레메트리 구성 툴바 버튼을 클릭합니다. 스크립트 텔레메트리에서는 현재 JProfiler 세션의 클래스패스에 구성된 모든 클래스에 액세스할 수 있습니다. 값을 직접 가져올 수 없는 경우 애플리케이션에 정적 메서드를 추가하여 이 스크립트에서 호출할 수 있습니다.

위의 예시는 플랫폼 MBean에 대한 호출을 보여줍니다. MBean의 스칼라 값을 그래프로 표시하는 작업은 MBean 텔레메트리를 사용하면 더욱 편리합니다. 여기서 MBean 브라우저를 통해 적절한 속성을 선택할 수 있습니다. 속성 값은 숫자여야 합니다.

여러 텔레메트리 라인을 단일 텔레메트리로 묶을 수 있습니다. 이것이 구성이 텔레메트리 자체와 텔레메트리 라인의 두 부분으로 나뉘는 이유입니다. 텔레메트리 라인에서는 데이터 소스와 라인 캡션만 편집하며, 텔레메트리에서는 포함된 모든 라인에 적용되는 단위, 배율 및 스태킹을 구성할 수 있습니다.

스택 텔레메트리에서는 개별 텔레메트리 라인이 누적 합산되며 영역 그래프를 표시할 수 있습니다. 배율 인수는 값을 지원되는 단위로 변환하는 데 유용합니다. 예를 들어 데이터 소스가 kB를 보고하는 경우 JProfiler에 일치하는 "kB" 단위가 없다는 문제가 있습니다. 배율 인수를 -3으로 설정하면 값이 바이트로 변환되며, 텔레메트리의 단위로 "bytes"를 선택하면 JProfiler가 자동으로 텔레메트리에 적절한 집계 단위를 표시합니다.

커스텀 텔레메트리는 구성된 순서대로 "텔레메트리" 섹션 끝에 추가됩니다. 순서를 변경하려면 개요에서 원하는 위치로 드래그합니다.

오버헤드 고려 사항

처음 보기에는 텔레메트리가 시간에 따라 메모리를 선형적으로 소비하는 것처럼 보일 수 있습니다. 그러나 JProfiler는 텔레메트리당 소비되는 총 메모리 양을 제한하기 위해 오래된 값을 통합하고 점진적으로 더 큰 단위로 만듭니다.

텔레메트리의 CPU 오버헤드는 해당 값이 초당 한 번만 폴링된다는 사실에 의해 제한됩니다. 표준 텔레메트리의 경우 이러한 데이터 수집에 따른 추가 오버헤드가 없습니다. 커스텀 텔레메트리의 경우 오버헤드는 기반 스크립트 또는 MBean에 의해 결정됩니다.