JDK 비행 기록기
JDK Flight RecorderJDK Flight Recorder는 Java 가상 머신에 내장된 이벤트 레코더다.그것은 상업용 항공기의 데이터 비행 기록기(블랙박스)에 상당하는 소프트웨어라고 생각할 수 있다.JVM 자체와 JVM에서 실행 중인 애플리케이션에 대한 정보를 캡처한다.메서드 프로파일링, 할당 프로파일링, 가비지 수집 관련 이벤트와 같이 캡처된 데이터는 매우 다양하다.JDK 비행 기록기는 프로파일링 시스템에서 관찰자 효과를 최소화하도록 설계되었으며, 생산 시스템에서 항상 켜지도록 되어 있다.이 기술은 2018년에 공개 소싱되었다.
비행 기록의 분석과 시각화는 일반적으로 JDK 임무 제어를 사용하여 이루어진다.
기술
기록 파일은 이진 데이터 청크로 구성된다.각각의 덩어리는 스스로 묘사하고 있고, 자기 안에 들어 있다.즉, 데이터를 이용하는 데 필요한 메타데이터(각 속성의 데이터 유형과 내용 유형 등)가 청크에 포함되어 있다(이벤트를 구문 분석할 뿐만 아니라 실제로 사용한다).또한 상수 풀과 같은 것을 통해 해결해야 하는 모든 값도 청크에 포함된다.
예를 들어, JFR을 효율적으로 만들기 위해 사용되는 기술은 매우 다양하다.
- 이진 표현, 문자열 앞뒤로 변환하지 않고 버퍼가 디스크로 효율적으로 방출됨
- 대부분의 이벤트가 스레드 로컬 네이티브 버퍼에 기록됨
- 일부 플랫폼에서 불변 TSC는 효율적인 시간 스탬핑을 위해 사용된다.
- 메모리 내 및 파일 크기를 줄이기 위한 정수 압축 구성표
- JVM에서 구현된 이후 많은 데이터를 쉽게 사용할 수 있거나 데이터를 쉽게 사용할 수 있는 시점에 내보냄으로써 비용 절감 효과 유지
바이너리 녹음을 JSON으로 변환하면 길이와 내용에 따라 2배 이상 쉽게 폭발할 수 있다.
기본 템플릿을 사용하는 JFR의 예상 성능 오버헤드는 1% 미만이고 프로파일링 템플릿의 경우 2% 미만이다.
역사
JDK Flight Recorder는 JRockit Flight Recorder로 시작되었으며, 원래 JVM 자체를 개선하는 데 사용할 데이터를 수집하는 수단으로 사용되었다.[1][2]Oracle이 Sun Microsystems를 인수한 후 JRockit Flight Recorder는 Java Flight Recorder의 브랜드가 변경되었다.[3]2018년 자바 비행 기록기가 오픈 소싱되어 오픈JDK 11의 일부로 출시되었다.[4]오픈 소스로 Java 상표 문제로 인해 JDK Flight Recorder 브랜드가 변경되었다.
버전
이것들은 이용 가능한 JFR 파일 포맷의 버전이다.지금까지 존재했던 모든 버전이 아니라 HotSpot으로 마이그레이션된 후 JVM에 존재하는 버전을 포괄한다.
| JFR 버전 | JDK 버전 |
|---|---|
| v0.9 | Oracle JDK 7(u4+), Oracle JDK 8 |
| v1.0 | Oracle JDK 9, Oracle JDK 10 |
| v2.0 | Oracle JDK 11+, Open JDK 11+, Azul JDK 8 및 Azul JDK 11+ |
참고 항목
참조
- ^ "JRockit Flight Recorder Runtime Guide" (PDF). Retrieved 22 January 2019.
- ^ Oracle JRockit: the Definitive Guide. Packt Pub. 2010. p. 588. ISBN 978-1847198068.
- ^ "Java Flight Recorder Runtime Guide". Retrieved 22 January 2019.
- ^ "JEP 328: Flight Recorder". Retrieved 22 January 2019.