JAVA · 성능/JVM
JFR과 JMC
Java Flight Recorder로 운영 환경의 성능 데이터를 수집하고 분석합니다.
성능/JVM고급JFRJMCFlightRecorder프로파일링
핵심 설명
Java Flight Recorder로 운영 환경의 성능 데이터를 수집하고 분석합니다.
Java code
// JFR — Java Flight Recorder (JDK 11+ 무료)
// 1. 명령줄로 JFR 시작
// java -XX:StartFlightRecording=duration=60s,filename=app.jfr MyApp
// 2. 실행 중 JFR 제어
// jcmd <pid> JFR.start name=profile duration=30s
// jcmd <pid> JFR.dump name=profile filename=dump.jfr
// jcmd <pid> JFR.stop name=profile
// 3. 프로그래밍 방식
import jdk.jfr.*;
@Label("사용자 요청")
@Category({"Application", "Request"})
@StackTrace(false)
class RequestEvent extends Event {
@Label("경로") String path;
@Label("응답시간(ms)") long responseTime;
@Label("상태코드") int statusCode;
}
public class JFRDemo {
static void handleRequest(String path) {
RequestEvent event = new RequestEvent();
event.begin();
// 요청 처리 시뮬레이션
long start = System.currentTimeMillis();
try { Thread.sleep((long)(Math.random() * 100)); }
catch (InterruptedException e) {}
event.path = path;
event.responseTime = System.currentTimeMillis() - start;
event.statusCode = 200;
event.commit(); // JFR에 기록
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
handleRequest("/api/users/" + i);
}
System.out.println("JFR 이벤트 기록 완료");
System.out.println("JMC(JDK Mission Control)로 .jfr 파일 분석");
}
}학습 팁
JFR은 오버헤드가 1% 미만이라 운영 환경에서도 안전하게 사용할 수 있습니다. 성능 문제 진단의 첫 번째 도구입니다.
주의할 점
JFR 파일이 커지면 분석이 어렵습니다. duration이나 maxsize를 적절히 설정하세요.
자주 묻는 질문
JFR과 JMC란 무엇인가요?
Java Flight Recorder로 운영 환경의 성능 데이터를 수집하고 분석합니다.
JFR과 JMC 학습 시 주의할 점은 무엇인가요?
JFR 파일이 커지면 분석이 어렵습니다. duration 이나 maxsize 를 적절히 설정하세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.