자바 - 가상 머신의 성능 모니터링 및 도구 문제 해결

배경

  보다 더 자주는 아니지만 사람은 프로젝트 개발에서 전체 프로젝트를 완료하지만, 팀에 의해 개발 및 프로그래밍 팀 구성원은 필연적 프로젝트 고르지 성능에 영향을 미칠 것입니다. 제품의 기본 모양은 응답 시간의 손실, 시스템 Caton 및 기타 문제로 이상적인 프로젝트되지 후 프로젝트가 필연적으로 발생한다합니다. 전체 응용 프로그램에 대한 자세한 분석의 필요성이 시점에서. 애널리스트에 대한 모든 프로젝트의 세부 사항 및 모든 노하우이기 때문에, 당신은 특정 데이터를 추출하는 몇 가지 보조 도구를 필요로하는 JVM (예 : 메모리의 GC의 주파수 분포), 그 데이터 분석의 유형 . 주요 이유의 정확한 위치는 이러한 상황의 적용을 일으킬 수 있습니다. 그런 다음 등등 이유 특정 문제 해결이나 성능 튜닝을위한. 몇 가지 도구가 매우 안정적이고 강력한 그래서 사실, Sun의 JDK에서 문제 해결 애플리케이션 성능 문제를 찾는 데 중요한 역할을 할 수 있습니다, 우리를위한 초기 준비

JPS

JVM 프로세스 상태 JPS 이름은 이름이 명령 줄 도구 정보를 얻기 위해 사용 JDK Java 응용 프로그램 프로세스를 제안합니다. 자바 애플리케이션은 JPS 명령 프로세스 ID 번호에 의해 얻을 수 있고, main () 함수 여기서, 클래스 경로 및 다른 시작 정보.
JSP 형식 :
  JPS [옵션] [PID]

옵션 효과
-큐 출력 만 LVMID (공정 ID)의 메인 클래스의 이름은 생략
-미디엄 가상 기계 프로세스로 전달되는 출력 파라미터 마스터 클래스 메인 시작 () 함수
-엘 하여 마스터 클래스의 출력, 프로세스가 수행되는 경우 항아리 패키지, 항아리 출력 경로의 전체 이름
-v 가상 기계 프로세스의 출력은 JVM 파라미터를 시작할 때

그러면 jstat

명령 줄 도구의 도구 이름을 모니터링 그러면 jstat JVM 통계는 클래스 로딩, 메모리 정보, 쓰레기 수거 등의 다양한 자바 애플리케이션의 상태 정보를 얻는 데 사용됩니다.
그러면 jstat 형식 :
  그러면 jstat [옵션] [<간격> [<카운트>]
  매개 변수를 생략하면,이 두 가지 매개 변수를 대신 쿼리는 한 번만 쿼리, 간격과 대표 쿼리 간격 횟수를 계산합니다.

옵션 효과
-수업 , 클래스 로딩을 모니터링 전체 공간의 양을 하역하고 시간은 클래스를로드하는 데 걸리는
-gc 그러한 고정 세대 용량, 사용 된 공간, GC 총 시간 정보 등의 에덴 지역이 개 생존자 지구, 옛 시대를 포함하여 자바 힙 상태 모니터링,
-gccapacity 내용을 모니터링하고 기본적으로 같은-GC하지만 출력이 주로 자바의 사용에 대해 우려되는 최대 각 지역 힙, 최소 공간
-gcutil 내용을 모니터링하고 기본적으로 같은-GC하지만 출력은 전체 공간의 비율의 사용에 초점을 맞추고있다
-gccause 함수 -gcutil과 일치하지만 마지막 GC에 의해 생성 된 추가 출력을 발생할
-gcnew GC는 새로운 세대의 상태를 모니터
-gcnewcapacity 내용을 모니터링하고 같은, 최대에 주요 관심사의 출력을 사용하여, 최소의 공간 기본적으로 -gcnew
-gcold GC 이전의 상태 모니터링
-gcoldcapacity 최소 공간의 최대 사용에 대한 주요 관심사의 출력 내용을 모니터링하고 기본적으로 동일한을 -gcold
-gcpermcapacity 발전 출력은 영구적으로 최대, 최소 공간을 사용하는
-컴파일러 JIT 컴파일러 출력 컴파일 방법, 시간이 많이 소요 및 기타 정보
-printcompilation 출력은 JIT 컴파일 방법있다

그러면 jstat 샘플을 수행

jstat -gc 25582
 S0C    S1C    S0U    S1U      EC       EU        OC       OU       MC     MU    CCSC   CCSU    YGC     YGCT    FGC    FGCT     GCT   
5120.0 5120.0  0.0    0.0   32768.0   9736.9   86016.0     0.0     4480.0 873.2  384.0   74.6    0      0.000    0     0.000    0.000

S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
MC、MU:元空间容量和使用量
CCSC、CCSU:[CompressedClassSpaceSize]压缩类空间容量和使用量
YGC、YGT:Young GC次数和Young GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时即Young GC与Full GC总耗时
jstat -gcutil 25582
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00   0.00  29.71   0.00  19.49  19.43      0    0.000     0    0.000    0.000
与上述一致分别代表的是使用百分比
jstat -gccapacity 25582
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC 
 43008.0 680960.0  43008.0 5120.0 5120.0  32768.0    86016.0  1362944.0    86016.0    86016.0      0.0 1056768.0   4480.0      0.0 1048576.0    384.0      0     0
NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:当前新生代容量

있는 jinfo

있는 jinfo (자바에 대한 구성 정보)이 명령은보기에 사용되는 매개 변수 자바 응용 프로그램을 시작 조정되고
있는 jinfo 명령 형식 :
  있는 jinfo [옵션] PID

옵션 효과
-깃발 응용 프로그램 시작을 보면서 매개 변수를 수정하려면, -flag 이름으로 얻어진 매개 변수 값은 -flag 이름 = 값에 의해 변경 될 수 있습니다
-sysprops 인쇄 신청 절차 System.getPropertis () 컨텐츠의 경우

jmap는

jmap는 (Java 용 메모리 맵)이 명령은 주로 스택 등 내 배포되는 Java 응용 프로그램 힙 메모리,보기 메모리 정보를 생성하는 데 사용됩니다.
jmap는 형식 :
    jmap의 [옵션] PID

옵션 효과
-덤프 자바 힙 덤프 스냅 샷을 생성합니다. 형식 : - 덤프 : [라이브] 형식 = B, 파일 = 단지 살 덤프 하위 매개 변수는 객체가 살아 있는지 여부를 나타냅니다.
-finalizerinfo F-대기열에서 마무리 처리 종료 자 스레드를 수행하는 표시 객체를 기다립니다.
-더미 같은 어떤 사용 매개 변수를 설정, 세대 상태의 복구와 같은 자바 힙 쇼 세부 사항.
-histo 디스플레이 힙 통계는 클래스 인스턴스의 수, 총 용량을 포함, 객체.
생존 중 클래스 로더는 국가를 대신하여 통계 영구 메모리를 보여주는 것입니다.
-에프 응답하지 않는 가상 머신 과정 - 덤프 옵션, 당신은 덤프 스냅 샷을 강제로이 옵션을 사용할 수 있습니다 때.

jmap는 수출 덤프 파일

jmap -dump:format=b,file=out.bin 25582
Dumping heap to /root/out.bin ...
Heap dump file created

JT

jhat를 (JVM 힙 분석 도구)이 명령은 주로 jmap는 덤프 파일을 구문 분석, 응용 프로그램 HTTP, 쉽게 시각적 콘텐츠 파일 덤프보기 브라우저를 시작합니다.

jhat /root/out.bin 
Reading from /root/out.bin...
Dump file created Sun Jan 19 00:05:08 CST 2020
Snapshot read, resolving...
Resolving 201499 objects...
Chasing references, expect 40 dots........................................
Eliminating duplicate references........................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

이 때, 브라우저를 통해 7000 액세스 포트는 결과를 볼 수 있습니다.

jstack을

jstack을 (Java 용 스택 추적)이 명령은 주로 스택 스냅 샷 자바 응용 프로그램 스레드를 생성하는 데 사용됩니다. 같은 같은 스레드로 인해 외부 리소스에 오랜 시간에 대한 요청을 기다리는 스레드, 무한 루프 사이의 교착 상태와 같은 스레드의 스택 스냅 샷에 따라 긴 일시 중지의 일반적인 원인 발생 긴 일시 정지의 원인을 찾을 수 스레드.
jstack을 형식 :
     jstack을 [옵션] PID

옵션 효과
-에프 요구 출력, 강제 출력 스레드 스택에 정상 응답하지 않을 때
-엘 스택 외에도 잠금에 대한 추가 정보를 표시
-미디엄 로컬 메소드의 호출은, 당신은 C / C ++ 스택을 표시 할 수있는 경우

또한 응용 프로그램을 얻을 수 수 () 메소드는 자바 코드에 GetAllStackTraces (을)의 java.lang.Thread에 의해되는 StackTraceElement 모든 스레드 개체를 모든 스레드에 대한 스택 정보가.

 

참고

추천

출처www.cnblogs.com/cjunn/p/12210430.html