JProfiler 도움말

MBean 브라우저

많은 애플리케이션 서버와 프레임워크(예: Apache Camel)는 JMX를 사용하여 설정 및 모니터링 목적으로 여러 MBean을 노출합니다. JVM 자체도 플랫폼 MXBean을 여러 개 제공하여 JVM의 저수준 동작에 대한 흥미로운 정보를 제공합니다.

JProfiler에는 프로파일된 VM에 등록된 모든 MBean을 보여주는 MBean 브라우저가 포함되어 있습니다. JMX의 MBean 서버에 접근하기 위한 원격 관리 레벨은 필요하지 않습니다. 이미 JProfiler 에이전트가 인프로세스에서 실행되고 있어 모든 등록된 MBean 서버에 접근할 수 있기 때문입니다.

JProfiler는 Open MBean의 타입 시스템을 지원합니다. Open MBean은 여러 단순 타입을 정의할 수 있을 뿐만 아니라, 커스텀 클래스를 사용하지 않고 복합 데이터 타입도 정의할 수 있습니다. 또한 배열과 테이블도 데이터 구조로 사용할 수 있습니다. MXBean을 통해 JMX는 Java 클래스로부터 Open MBean을 자동으로 생성하는 쉬운 방법을 제공합니다. 예를 들어, JVM에서 제공하는 MBean은 모두 MXBean입니다.

MBean에는 계층 구조가 없지만, JProfiler는 오브젝트 도메인 이름의 첫 번째 콜론까지를 트리의 첫 번째 레벨로 사용하고, 모든 프로퍼티를 재귀적으로 중첩된 레벨로 사용하여 트리로 구성합니다. 프로퍼티 값이 먼저 표시되고, 프로퍼티 키는 끝에 대괄호로 표시됩니다. type 프로퍼티는 최상위 노드 바로 아래에 표시되도록 우선 처리됩니다.

속성

MBean 내용을 보여주는 트리 테이블의 최상위 레벨에는 MBean 속성이 표시됩니다.

다음과 같은 데이터 구조는 중첩된 행으로 표시됩니다:

  • 배열
    기본형 배열 및 오브젝트 배열의 요소는 인덱스를 키 이름으로 하여 중첩된 행으로 표시됩니다.
  • 복합 데이터
    복합 데이터 타입의 모든 항목은 중첩된 행으로 표시됩니다. 각 항목은 임의의 타입일 수 있으므로, 중첩은 임의의 깊이까지 계속될 수 있습니다.
  • 테이블 데이터
    대부분 MXBean에서 java.util.Map 인스턴스가 하나의 키 컬럼과 하나의 값 컬럼을 가진 테이블 데이터 타입으로 매핑되는 경우를 자주 볼 수 있습니다. 키의 타입이 단순 타입이면, 맵이 "인라인"으로 표시되고 각 키-값 쌍이 중첩된 행으로 표시됩니다. 키가 복합 타입이면, 중첩된 키와 값 항목을 가진 "map entry" 요소 레벨이 추가됩니다. 복합 키와 다중 값을 가진 일반 테이블 타입도 마찬가지입니다.

선택적으로, MBean 속성은 편집 가능할 수 있으며, 이 경우  edit 아이콘이 값 옆에 표시되고 값 편집 액션이 활성화됩니다. 복합 및 테이블 타입은 MBean 브라우저에서 편집할 수 없지만, 배열이나 단순 타입은 편집이 가능합니다.

값이 nullable(예: 배열)인 경우, 에디터에 null 상태를 선택할 수 있는 체크박스가 제공됩니다.

배열 요소는 세미콜론(;)으로 구분됩니다. 마지막에 오는 세미콜론 하나는 무시할 수 있으므로, 11;은 동일하게 처리됩니다. 세미콜론 앞에 값이 없으면 오브젝트 배열에서는 null 값으로 처리됩니다. 문자열 배열의 경우, 빈 요소는 큰따옴표("")로 만들 수 있고, 세미콜론이 포함된 요소는 전체를 따옴표로 감싸면 됩니다. 문자열 요소 내의 큰따옴표는 두 번 써야 합니다. 예를 들어, 다음과 같이 문자열 배열 값을 입력하면

"Test";"";;"embedded "" quote";"A;B";; 

다음과 같은 문자열 배열이 생성됩니다.

new String[] {"Test", "", null, "embedded \" quote", "A;B", null} 

JProfiler는 숫자형 MBean 속성 값으로부터 커스텀 텔레메트리를 생성할 수 있습니다. 커스텀 텔레메트리를 위한 MBean 텔레메트리 라인 정의를 할 때, 텔레메트리 데이터를 제공하는 속성을 선택할 수 있는 MBean 속성 브라우저가 표시됩니다. 이미 MBean 브라우저에서 작업 중이라면, 컨텍스트 메뉴의 값에 대한 텔레메트리 추가 액션을 통해 새로운 커스텀 텔레메트리를 쉽게 생성할 수 있습니다.

텔레메트리는 복합 데이터 또는 단순 키와 단일 값을 가진 테이블 데이터의 중첩 값을 추적할 수도 있습니다. 중첩된 행을 선택하면, 경로 컴포넌트가 슬래시(/)로 구분된 값 경로가 생성됩니다.

연산

MBean 속성의 조회 및 수정 외에도, MBean 연산을 호출하고 그 반환 값을 확인할 수 있습니다. MBean 연산은 MBean 인터페이스에서 setter나 getter가 아닌 메서드입니다.

연산의 반환 값은 복합, 테이블 또는 배열 타입일 수 있으므로, MBean 속성 트리 테이블과 유사한 내용의 새 창이 표시됩니다. 반환 타입이 단순 타입이면 "반환 값"이라는 한 행만 표시됩니다. 다른 타입의 경우, "반환 값"이 결과가 추가되는 루트 요소가 됩니다.

MBean 연산은 하나 이상의 인자를 가질 수 있습니다. 인자를 입력할 때는 MBean 속성 편집과 동일한 규칙과 제한이 적용됩니다.

MBean 스냅샷

MBean의 실시간 값을 보는 것 외에도, 현재 상태의 스냅샷을 찍을 수도 있습니다. 새 스냅샷은 MBean 뷰 섹션에 별도의 뷰로 추가되며, 커스텀 라벨을 지정할 수 있습니다. 스냅샷을 찍을 때는 현재 필터에 따라 표시되는 MBean만 포함됩니다. 이를 통해 특정 MBean에 집중하고, 목적과 관련 없는 MBean 쿼리의 오버헤드를 줄일 수 있습니다.

JProfiler UI에서 스냅샷을 저장하면, 모든 MBean 스냅샷도 함께 저장되지만, 실시간 MBean 뷰는 저장되지 않습니다. 오프라인 프로파일링의 경우, Controller API 또는 "MBean 스냅샷 저장" 트리거 액션을 사용하여 프로그래밍 방식으로 MBean 스냅샷을 찍을 수 있습니다.

Controller API와 트리거 액션 모두 뷰 선택기에 표시되는 선택적 라벨과, 포함할 MBean을 필터링할 선택적 정규 표현식을 지원합니다.