프로파일링의 한 측면은 시간에 따라 스칼라 측정값을 모니터링하는 것입니다. 예를 들어, 사용된 힙 크기 등이 있습니다. JProfiler에서는 이러한 그래프를 텔레메트리라고 부릅니다. 텔레메트리를 관찰하면 프로파일된 소프트웨어에 대한 이해도를 높일 수 있고, 서로 다른 측정값에서 중요한 이벤트를 연관지어 볼 수 있으며, 예기치 않은 동작이 감지될 경우 JProfiler의 다른 뷰에서 더 깊은 분석을 수행하도록 유도할 수 있습니다.
표준 텔레메트리
JProfiler UI의 "텔레메트리" 섹션에서는 여러 텔레메트리가 기본적으로 기록됩니다. 인터랙티브 세션에서는 항상 활성화되어 있습니다. 일부 텔레메트리는 특정 유형의 데이터가 기록되어야만 사용할 수 있습니다. 이 경우 텔레메트리 내에 녹화(레코딩) 액션이 표시됩니다.
여러 텔레메트리를 동일한 시간 축에서 비교하려면, 개요 화면에서 여러 개의 소형 텔레메트리가 서로 위에 쌓여서 표시되며, 행 높이는 설정할 수 있습니다. 텔레메트리 제목을 클릭하면 전체 텔레메트리 뷰가 활성화됩니다. 개요에서 텔레메트리의 기본 순서가 적합하지 않을 수 있는데, 예를 들어 선택한 텔레메트리를 나란히 비교하고 싶을 때가 있습니다. 이 경우 개요에서 드래그 앤 드롭으로 순서를 변경할 수 있습니다.
전체 뷰에서는 현재 값이 표시된 범례가 나타나며, 개요에서 보이는 것보다 더 많은 옵션이 제공될 수 있습니다. 예를 들어, "Memory" 텔레메트리에서는 개별 메모리 풀을 선택할 수 있습니다.
JProfiler에는 JVM의 상위 시스템 및 주요 프레임워크에서 이벤트를 기록하는 프로브가 다수 존재합니다. 프로브에는 해당 프로브 뷰에 표시되는 텔레메트리가 있습니다. 이러한 텔레메트리를 시스템 텔레메트리와 비교하려면, 선택한 프로브 텔레메트리를 최상위 텔레메트리 섹션에 추가할 수 있습니다. 툴바에서 텔레메트리 추가→프로브 텔레메트리 를 선택하고 하나 이상의 프로브 텔레메트리를 선택하세요.
추가된 각 프로브 텔레메트리는 텔레메트리 섹션에 자체 뷰가 생성되며, 개요에도 표시됩니다.
프로브 텔레메트리가 추가되면, 프로브 데이터가 기록된 경우에만 데이터가 표시됩니다. 그렇지 않으면 텔레메트리 설명에 녹화를 시작하는 인라인 버튼이 포함됩니다.
프로브 텔레메트리의 컨텍스트 메뉴에는 녹화 액션과 해당 프로브 뷰를 표시하는 액션이 포함되어 있습니다.
프로브 뷰와 마찬가지로, 기록된 객체에 대한 VM 텔레메트리도 메모리 녹화에 따라 달라지며, 녹화 버튼과 유사한 컨텍스트 메뉴가 제공됩니다.
마지막으로, "트래킹" 텔레메트리는 다른 뷰에서 선택된 스칼라 값을 모니터링합니다. 예를 들어, 클래스 트래커 뷰에서는 클래스를 선택하여 인스턴스 개수를 시간에 따라 모니터링할 수 있습니다. 또한 각 프로브에는 선택한 핫스팟이나 제어 객체를 모니터링하는 "트래커" 뷰가 있습니다.
북마크
JProfiler는 모든 텔레메트리에 표시되는 북마크 목록을 관리합니다. 인터랙티브 세션에서는 북마크 추가 툴바 버튼을 클릭하거나, 컨텍스트 메뉴의 여기에 북마크 추가 기능을 사용하여 현재 시점에 북마크를 추가할 수 있습니다.
북마크는 수동으로 생성할 수도 있지만, 녹화 액션에 의해 자동으로 추가되어 특정 녹화의 시작과 끝을 표시합니다. 트리거 액션이나 컨트롤러 API를 사용하여 프로그래밍적으로 북마크를 추가할 수도 있습니다.
북마크에는 색상, 선 스타일, 그리고 툴팁에 표시되는 이름이 있습니다. 기존 북마크를 편집하여 이러한 속성을 변경할 수 있습니다.
텔레메트리에서 여러 북마크를 우클릭하는 것이 번거롭다면, 프로파일링→북마크 편집 메뉴 액션을 사용하여 북마크 목록을 확인할 수 있습니다. 이곳에서 북마크를 HTML 또는 CSV로 내보낼 수도 있습니다.
사용자 정의 텔레메트리
직접 텔레메트리를 추가하는 방법은 두 가지가 있습니다: JProfiler UI에서 스크립트를 작성하여 숫자 값을 제공하거나, 숫자형 MBean 속성을 선택하는 것입니다.
사용자 정의 텔레메트리를 추가하려면 "텔레메트리" 섹션에 표시되는 텔레메트리 구성 툴바 버튼을 클릭하세요. 스크립트 텔레메트리에서는 현재 JProfiler 세션의 클래스패스에 설정된 모든 클래스에 접근할 수 있습니다. 값을 직접 얻을 수 없다면, 애플리케이션에 static 메서드를 추가하여 이 스크립트에서 호출할 수 있습니다.
위 예제는 플랫폼 MBean에 대한 호출을 보여줍니다. MBean의 스칼라 값을 그래프로 나타내는 것은 MBean 텔레메트리를 사용하는 것이 더 편리합니다. 여기서는 MBean 브라우저를 통해 적절한 속성을 선택할 수 있습니다. 속성 값은 반드시 숫자형이어야 합니다.
여러 텔레메트리 라인을 하나의 텔레메트리에 묶을 수 있습니다. 그래서 설정이 두 부분으로 나뉘어 있습니다: 텔레메트리 자체와 텔레메트리 라인입니다. 텔레메트리 라인에서는 데이터 소스와 라인 캡션만 편집하고, 텔레메트리에서는 단위, 스케일, 누적(스태킹) 등을 설정할 수 있으며, 이는 포함된 모든 라인에 적용됩니다.
누적(스택) 텔레메트리에서는 각 텔레메트리 라인이 누적되어 영역 그래프로 표시될 수 있습니다. 스케일 팩터는 값을 지원되는 단위로 변환하는 데 유용합니다. 예를 들어, 데이터 소스가 kB를 리포트하는 경우 JProfiler에는 "kB" 단위가 없기 때문에 문제가 발생합니다. 스케일 팩터를 -3으로 설정하면 값이 바이트로 변환되고, 텔레메트리의 단위를 "bytes"로 선택하면 JProfiler가 자동으로 적절한 집계 단위를 표시합니다.
사용자 정의 텔레메트리는 "텔레메트리" 섹션의 마지막에, 설정된 순서대로 추가됩니다. 순서를 변경하려면 개요에서 원하는 위치로 드래그하세요.
오버헤드 고려사항
언뜻 보기에는 텔레메트리가 시간에 따라 선형적으로 메모리를 소비할 것처럼 보입니다. 하지만 JProfiler는 오래된 값을 통합하여 점차적으로 더 거친(덜 세밀한) 데이터로 만들어, 텔레메트리별로 소비되는 전체 메모리 양을 제한합니다.
텔레메트리의 CPU 오버헤드는 값이 초당 한 번만 폴링된다는 점에서 제한됩니다. 표준 텔레메트리의 경우 이 데이터 수집을 위한 추가 오버헤드는 없습니다. 사용자 정의 텔레메트리의 경우 오버헤드는 기반이 되는 스크립트나 MBean에 의해 결정됩니다.

























