목차
JFR과 VisualVM이란 무엇입니까?
성능 로깅을 위해 JFR을 활성화하고 사용하는 방법
JFR 레코드를 시작하는 방법 :
VisualVM을 사용하여 JFR 레코드 분석
VisualVM 설치 및 구성 (타사 강화 버전이 권장됨)
JFR 파일로드 및 분석
1. 개요
2. 원격 측정
3. 쓰레기 수집
4. 기억
5.
6. 코드 (핫 방법)
실용 기술 : 일반적인 성능 문제를 신속하게 찾으십시오
팁과 예방 조치
Java java지도 시간 JFR 및 VisualVM으로 Java 성능 프로파일 링

JFR 및 VisualVM으로 Java 성능 프로파일 링

Jul 29, 2025 am 01:32 AM
자바 성능

JFR 및 VisualVM은 Java 성능 분석의 효율적인 조합입니다. JFR은 JVM 실행 데이터를 수집하기 위해 오버 헤드가 낮으며 VisualVM은 시각적 분석에 사용됩니다. 1. JFR이 시작시 -XX : Flightrecorder 매개 변수를 추가하거나 작동 중에 JCMD 명령을 사용하여 동적으로 활성화 할 수 있습니다. 보다 자세한 이벤트를 얻기 위해 프로파일 템플릿을 사용하는 것이 좋습니다. 2. JCMD 명령을 사용하여 시간이 정한 녹음의 시간 및 파일 이름과 같은 매개 변수를 설정하거나 Custom .JFC 파일을 통해 획득 이벤트를 정확하게 제어 할 수 있습니다. 3. VisualVM은 커뮤니티 향상 버전을 설치하고 JFR 플러그인을 추가해야합니다. .jfr 파일을로드 한 후 개요, 원격 측정, 쓰레기 수집, 메모리, 스레드, 코드 및 기타 패널을 통해 CPU, 메모리, GC, 스레드 및 기타 문제를 분석 할 수 있습니다. 4. 성능 병목 현상을 포지셔닝 할 때 핫 메소드는 CPU 핫스팟, 메모리 패널 객체 객체 할당을 발견하는 데 사용됩니다. 스레드 패널은 잠금 경쟁을 인식하고 GC 차트는 재활용 빈도 및 일시 중지를 결정합니다. 5. 실제로 사용하면 기본 템플릿을 피하고 녹화 시간을 합리적으로 설정해야하며 온라인 문제를 처리하기 위해 프로세스를 정기적으로 연습해야합니다. 이 조합은 최신이 아니지만 여전히 가볍고 효과적이며 대부분의 Java 개발자가 성능 문제를 신속하게 진단하는 데 적합합니다.

JFR 및 VisualVM으로 Java 성능 프로파일 링

Java 성능 분석은 응용 프로그램을 최적화하고 병목 현상 문제를 해결하는 핵심 단계입니다. 실제 개발 및 운영 및 유지 보수에서 JFR (Java Flight Recorder)과 VisualVM은 두 가지 매우 실용적인 도구입니다. 그들은 조합으로 사용하여 JVM 실행 상태 및 응용 프로그램 동작에 대한 통찰력을 얻을 수 있습니다. 다음은 성능 분석에 사용하는 방법에 대한 자세한 설명입니다.

JFR 및 VisualVM으로 Java 성능 프로파일 링

JFR과 VisualVM이란 무엇입니까?

JFR (Java Flight Recorder) 은 JDK의 내장 저점 헤드 성능 모니터링 및 이벤트 녹화 도구입니다. GC, 스레드, 잠금 경쟁, 메소드 샘플링 등과 같은 내부 JVM 실행 데이터를 지속적으로 수집 할 수 있으며 생산 환경에서 사용하기에 적합합니다.

VisualVM은 JVM 메모리, CPU, 스레드 및 클래스로드보기를 지원하는 그래픽 모니터링 및 분석 도구입니다. 시각적 분석을 위해 JFR 녹음 파일을로드 할 수 있습니다.

JFR 및 VisualVM으로 Java 성능 프로파일 링

둘 다 함께 사용됩니다. JFR은 데이터 수집을 담당하며 VisualVM은 표시 및 분석을 담당합니다.


성능 로깅을 위해 JFR을 활성화하고 사용하는 방법

JFR은 JDK 8U40에서 시작하여 JDK 11에서 기본적으로 통합되며 무료입니다 (초기 버전의 Oracle JDK는 상업적 승인이 필요합니다).

JFR 및 VisualVM으로 Java 성능 프로파일 링

JFR 레코드를 시작하는 방법 :

명령 줄 또는 JMX를 통해 동적으로 활성화 할 수 있습니다.

 # 메소드 1 : 시작시 JFR을 켜십시오
java -xx : flightrecorder -xx : startflightrecording = duration = 60s, filename = app.jfr myApplication

# 방법 2 : 작동 중 동적으로 켜짐 (프로세스 PID를 알고 있다고 가정)
jcmd <pid> jfr.start duration = 30s filename = recording.jfr

공통 매개 변수 설명 :

  • duration : 녹음 기간 (예 : 60 년대)
  • filename : 출력 파일 경로
  • maxage / maxsize : 루프 레코드 설정
  • settings : 사용자 정의 이벤트 구성 템플릿 (예 : 자세한 내용은 "프로필"모드)

예를 들어, 고성능 프로파일 레코드를 활성화합니다.

 jcmd <pid> jfr.start settings = profile duration = 120s filename = perf.jfr

profile 템플릿을 사용하면 심층적 인 성능 분석에 적합한 더 많은 샘플링 이벤트가 가능합니다.


VisualVM을 사용하여 JFR 레코드 분석

VisualVM은 더 이상 적극적으로 유지 관리 (아카이브)되지 않지만 여전히 로컬 디버그 분석에 널리 사용됩니다. JFR을 지원하는 것은 그 힘입니다.

VisualVM 설치 및 구성 (타사 강화 버전이 권장됨)

공식 원래 VisualVM은 JFR에 대한 지원이 제한되어 있습니다. 커뮤니티가 관리하는 "VisualVM 2.0"버전 인 JFR 플러그인과 함께 VisualVM을 사용하는 것이 좋습니다.

다운로드 주소 : //m.sbmmt.com/link/81a25c4e9b7f4f8fa356e4863b32735e

간단한 설치 단계 :

  1. 다운로드 및 zip visualvm
  2. 시작 후 도구 → 플러그인 → 사용 가능한 플러그인을 입력하십시오
  3. "Java Flight Recorder"플러그인을 설치하십시오
  4. 다시 시작됩니다

JFR 파일로드 및 분석

  1. visualVM을 엽니 다
  2. 파일 선택 →로드 → 메뉴 표시 줄에서 .jfr 파일을 선택하십시오.
  3. 다음 주요 패널을보십시오.
1. 개요
  • 표시 기록 시간, JVM 정보, 호스트 환경 및 기타 메타 데이터
2. 원격 측정
  • 힙 메모리의 실시간 표시, 비 HEAP 메모리, GC 시간, 스레드 카운트 및 CPU 사용 추세 차트
  • 메모리 누출이 있는지 또는 CPU 급등 문제가 있는지 신속하게 결정
3. 쓰레기 수집
  • 각 GC의 시간, 유형 (Young GC / Full GC), 전면 및 후면 힙 크기를 표시합니다.
  • 빈번한 GC 또는 연장 된 일시 중지를 찾을 수 있습니다 (STW)
4. 기억
  • 힙 객체 할당 핫스팟 (유형별 할당 된 객체)
  • 생성 된 많은 작은 개체를 찾을 수 있습니다 (예 : String, Hashmap)
5.
  • 스레드 상태 변경, 차단 이유
  • 잠금 경쟁 이벤트 (모니터 대기, 블록)가 명확하게 보입니다.
  • 교착 상태 또는 높은 대기 시간을 식별 할 수있는 동기 블록
6. 코드 (핫 방법)
  • 메소드 샘플링 통화 스택 (타이밍 샘플링 기반)
  • 가장 많은 CPU를 차지하는 핫스팟 찾기
  • 스레드별로 통화 체인 확장을 지원하여 느린 포지셔닝 및 작동을 용이하게합니다.

⚠️ 참고 : JFR이 기본적으로 모든 이벤트를 활성화하지는 않습니다. 세부 사항이 충분하지 않은 경우 profile 구성 또는 사용자 정의 .jfc 파일을 사용하여 샘플링 정확도를 향상시켜야합니다.


실용 기술 : 일반적인 성능 문제를 신속하게 찾으십시오

질문 유형 JFR VisualVM 분석 지점
과도한 CPU 사용 "핫 방법"을 확인하여 가장 샘플을 가장 많이 소비하는 방법을 확인하십시오. 무한 루프 또는 일반 경기 폭발 여부를 확인하십시오
메모리 성장이 너무 빠릅니다 "메모리 → 할당"을 확인하여 많은 수의 인스턴스화 클래스를 찾으십시오. GC 주파수를 사용하여 누출 중인지 확인하십시오
응답이 느려집니다 스레드 대기 이벤트 (모니터 차단)를 확인하십시오. 잠금 경쟁이 있습니까? 데이터베이스 연결 풀이 소진 되었습니까?
자주 GC GC 주파수 및 지속 시간을 확인하려면 "Garbage Collection"차트를 확인하십시오. 힙 크기 조정 또는 적절한 GC 알고리즘을 선택하십시오.

예를 들어:
java.util.HashMap.get() 가 "Hot Methods"에서 상단에 나타나고 캐시 클래스에서 나옵니다. 이것은 다음을 의미 할 수 있습니다.

  • 낮은 캐시 적중률, 빈번한 해시 계산
  • 또는 동시 액세스가 심각하여 빨간색과 검은 색 트리가 퇴보하고 스레드 스택을 더보고, 통화 컨텍스트를 확인한 다음 ConcurrentHashMap 으로 교체할지 또는 키 설계를 최적화할지 여부를 결정합니다.

팁과 예방 조치

  • 오버 헤드가 낮은 오버 헤드는 제로를 의미하지는 않습니다 . JFR 기본 오버 헤드는 <2%이지만 극한의 높은 처리량 시나리오에서 샘플링 주파수를 제어하는 것이 좋습니다.
  • 기록 시간을 합리적으로 설정 : 너무 짧으면 문제가 발생하지 않습니다. 너무 길면 성능에 영향을 미치고 큰 파일이 있습니다.
  • 설정 파일을 사용하여 이벤트를 사용자 정의합니다 .
     jcmd <pid> jfr.check # 사용 가능한 템플릿보기 jcmd <pid> jfr.start settings = myconfig.jfc ...

    .jfc 파일을 직접 편집하고 신경 쓰는 이벤트 만 사용할 수 있습니다 (예 : 스레드 및 GC에만 초점을 맞추면).

  • 심층 진단을 위해 기본 템플릿에 의존하지 마십시오 . 기본 템플릿에는 이벤트가 적으므로 profile 또는 사용자 정의 구성을 사용하는 것이 좋습니다.

  • 기본적으로 그게 다야. JFR은 강력한 기본 데이터 수집 기능을 제공하며 VisualVM은 이러한 콜드 데이터를 직관적이고 이해하기 쉽게 만듭니다. 대부분의 Java 개발자에게는 더 현대적인 도구 (예 : Async-Profiler, JMC, Prometheus Grafana)가 있지만이 조합은 여전히 충분하고 가벼우 며 코드 항목이 필요하지 않습니다.

    복잡하지는 않지만 무시하기 쉬운 것은 다음과 같습니다. 전체 기록 → 분석 프로세스를 미리 연습하고 온라인에서 문제가있을 때만 빠르게 응답 할 수 있습니다.

    위 내용은 JFR 및 VisualVM으로 Java 성능 프로파일 링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

PHP 튜토리얼
1525
276
기본 하드웨어 아키텍처가 Java의 성능에 어떤 영향을 미칩니 까? 기본 하드웨어 아키텍처가 Java의 성능에 어떤 영향을 미칩니 까? Apr 28, 2025 am 12:05 AM

Java 성능은 하드웨어 아키텍처와 밀접한 관련이 있으며이 관계를 이해하면 프로그래밍 기능이 크게 향상 될 수 있습니다. 1) JVM은 JIT 컴파일을 통해 Java Bytecode를 기계 지침으로 변환하여 CPU 아키텍처의 영향을받습니다. 2) 메모리 관리 및 쓰레기 수집은 RAM 및 메모리 버스 속도의 영향을받습니다. 3) 캐시 및 분기 예측은 Java 코드 실행을 최적화합니다. 4) 멀티 코어 시스템의 멀티 스레딩 및 병렬 처리는 성능을 향상시킵니다.

Java 개발에 대한 경험과 제안: 데이터 구조와 알고리즘을 효율적으로 다루는 방법 Java 개발에 대한 경험과 제안: 데이터 구조와 알고리즘을 효율적으로 다루는 방법 Nov 22, 2023 pm 12:09 PM

Java 개발은 현재 가장 인기 있는 프로그래밍 언어 중 하나입니다. 그 힘은 풍부한 데이터 구조와 알고리즘 라이브러리에 있습니다. 하지만 이제 막 시작했거나 자신의 발전을 원하는 개발자에게 데이터 구조와 알고리즘을 효율적으로 처리하는 방법은 여전히 ​​​​어려운 과제입니다. 이 기사는 Java 개발에 대한 나의 경험과 제안을 여러분과 공유할 것이며 모든 사람에게 도움이 되기를 바랍니다. 첫째, 일반적인 데이터 구조와 알고리즘을 이해하는 것이 매우 중요합니다. Java에는 배열, 연결 목록, 스택 및 대기열과 같이 일반적으로 사용되는 많은 데이터 구조 및 알고리즘이 내장되어 있습니다.

다른 플랫폼에서 Java 코드를 실행할 때 성능 차이가 있습니까? 왜? 다른 플랫폼에서 Java 코드를 실행할 때 성능 차이가 있습니까? 왜? Apr 26, 2025 am 12:15 AM

Java 코드는 다른 플랫폼에서 실행할 때 성능 차이가 있습니다. 1) JVM의 구현 및 최적화 전략은 OracleJDK 및 OpenJDK와 같이 다릅니다. 2) 메모리 관리 및 스레드 스케줄링과 같은 운영 체제의 특성도 성능에 영향을 미칩니다. 3) 적절한 JVM을 선택하여 JVM 매개 변수 및 코드 최적화를 조정하여 성능을 향상시킬 수 있습니다.

수정 방법: Java 성능 오류: 높은 CPU 사용량 수정 방법: Java 성능 오류: 높은 CPU 사용량 Aug 27, 2023 am 08:27 AM

해결 방법: Java 성능 오류: 높은 CPU 사용량 Java 애플리케이션을 개발할 때 높은 CPU 사용량 문제에 자주 직면하게 됩니다. 이로 인해 애플리케이션 성능이 저하되고 상당한 컴퓨팅 리소스가 소모될 수 있습니다. 이 기사에서는 Java 애플리케이션의 과도한 CPU 사용 문제를 해결하는 몇 가지 방법을 제공하고 코드 예제를 첨부합니다. 코드에서 루프 및 재귀를 확인합니다. Java에서 루프와 재귀는 높은 CPU 사용량의 일반적인 원인 중 하나입니다. 코드에 불필요한 루프와 재귀가 없는지 확인하고 다음을 시도하십시오.

JIT (Just-In-Time) 컴파일은 Java의 성능 및 플랫폼 독립에 어떤 영향을 미칩니 까? JIT (Just-In-Time) 컴파일은 Java의 성능 및 플랫폼 독립에 어떤 영향을 미칩니 까? Apr 26, 2025 am 12:02 AM

jitcompilationinjavaenhancesperformance는 platformindence.1) ItdynamicallyTransLatesByTecodeIntonativeMachinecodeatimeTime, 최적화 FREQUELTEREDCODE.2) TheJVMREMAINSPLATFORM- Independent, 허용 THEMEJAVAAPPLITIONTORUNONDIFFEREN을 허용합니다

JVM 성능 대 기타 언어 JVM 성능 대 기타 언어 May 14, 2025 am 12:16 AM

JVM 'sperformanceIscompetitive, ontotherRuntimes, 안전 및 생산성을 제공합니다

JAVA 기반 성능 최적화 및 튜닝 실습 JAVA 기반 성능 최적화 및 튜닝 실습 Nov 08, 2023 pm 01:31 PM

JAVA 기반 성능 최적화 및 튜닝 실습 요약: 인터넷의 급속한 발전과 함께 JAVA는 고성능, 고신뢰성 프로그래밍 언어로서 다양한 분야에서 널리 사용되고 있습니다. 그러나 JVM(JAVA Virtual Machine)의 존재로 인해 많은 개발자는 JAVA의 기본 구현 및 성능 조정 기술을 이해하지 못할 수 있습니다. 이 기사에서는 개발자가 JAVA의 성능 이점을 더 잘 이해하고 활용하는 데 도움이 되는 몇 가지 JAVA 기본 성능 최적화 및 조정 방법을 소개합니다. 1. JAVA 가상 머신을 이해하고 JAVA의 기본 특성을 학습합니다.

GC 튜닝이 Java 프레임워크 성능에 미치는 영향 GC 튜닝이 Java 프레임워크 성능에 미치는 영향 Jun 05, 2024 pm 09:06 PM

GC 튜닝은 새로운 세대 크기, 가비지 수집 임계값 및 동시 GC 모드를 포함한 JVMGC 매개변수를 조정하여 Java 프레임워크 성능을 최적화합니다. 실제 사례에서 SpringBoot 프레임워크에 대한 GC 튜닝은 평균 응답 시간을 각각 100ms, 400ms, 1000ms 단축하여 GC 튜닝이 Java 프레임워크 성능에 미치는 상당한 영향을 입증했습니다.

See all articles