JVM 튜닝의 (a) - 쿼리 매개 변수 및 문제 해결

JVM 매개 변수 유형

표준 매개 변수

  • -도움
  • -server -client
  • -version -showversion
  • -cp -classpath

X-매개 변수

  • -Xint : 해석
  • -Xcomp : 처음으로 네이티브 코드로 컴파일
  • -Xmixed : 혼합 모드, JVM은 네이티브 코드로 컴파일 여부를 결정합니다

XX 매개 변수

특징

  • 비 표준화 된 매개 변수
  • 상대적으로 불안정
  • 주로 튜닝 및 JVM 디버그를위한

분류

  • 부울 유형

    格式:-XX:[+-]<name>表示启用或禁用name属性
    比如:
    -XX:+UseConcMarkSweepGC
    -XX:+UseG1GC
  • 비 부울 유형

    格式:-XX:<name>=<value> 表示name属性的值是value
    比如:
    -XX:MaxGCPauseMilis=500
    XX:GCTimeRatio=19

  • -Xms 상응하는 -XX합니다 : InitialHeapSize는 힙 크기를 초기화 //
  • -Xms 상응하는 -XX합니다 : MaxHeapSize // 최대 힙 크기

JVM 런타임 매개 변수보기

-XX:+PrintFlagsInitial   //查看初始值
-XX:+PrintFlagsFinal   //查看最终的值
-XX:+UnlockExperimentalVMOptions   //解锁实验参数
-XX:+UnlockDiagnosticVMOptions  //解锁诊断参数
-XX:+PrintCommandLineFlags  //打印命令行参数

PrintFlagsFinal

1569671403867

1569671560784

= 기본을 나타냅니다

: 사용자 또는 사용자에 의해 수정 JVM = 값

JPS

리눅스 PS 유사보기 자바 과정,

1569671892159

있는 jinfo

jinfo -flag MaxHeapSize xxxx(进程号)   //查看最大堆内存

1569671942784

jinfo -flag UseConcMarkSweepGC xxx(进程号)     //查看是否使用了这个GC
jinfo -flag UseG1GC xxx(进程号)    //是否使用了G1回收器
jinfo -flag UseParallelGC xxx(进程号)  //是否使用了并行回收器 

1569672105632

그러면 jstat보기 가상 머신 통계

형식 :

options:-class,-compiler,-gc,-printcompilation

클래스 로더

보기 클래스 로더 정보 :

jstat -class xxx(进程号)

1569673720935

说明:
3176(进程号)
1000(1000毫秒,没隔1秒)
10(一共输出10次)
3176这个进程,没隔1s输出一次,一共输出10次

쓰레기 수거

-GC / -gcutil / -gccause / -gcnew / -gccold

-gc 출력

S0C / S1C / S0U / S1U : S0와 S1 및 총량

EC / EU : 전체 면적 에덴의 양

OC / OU : 구 지역의 총량

MC / MU : 전액 지역 Metaspace

CCSC / CCSU : 전체 공간의 압축

YGC / YGCT : youngGC의 수와 시간

FGC / FGCT : FullGC의 수와 시간

GCT : 총 GC 시간

용도

jstat -gc xxx(进程号) 1000 10   //动态输出,没隔1s输出一次,一共输出10次

JIT 컴파일러

보기 JIT 컴파일러 정보

jstat -compiler PID
jstat -printcompilation PID

jmap는 + MAT 전투 메모리 오버플

JVM 메모리 구조

1569675319637

메모리 매핑 파일을 내보내는 방법

메모리 오버 플로우가 자동으로 수출

设置两个参数:
-XX:+HeapDumpOnOutOfMemoryError     //开启功能
-XX:HeapDumpPath=./     //导出到什么路径

수동으로 jmap는 수출 명령을 사용하여

jmap -dump:format=b,file=help.hprof
format=b 导出的格式是二进制的文件

메모리 오버 플로우의 MAT 분석

  • 다운로드 MAT 도구
  • 분석을위한 MAT에 내 보낸 이미지 파일

교착 jstack을 가진 무한 루프 실제

스레드의 상태 :

1, 새로운

2, 실행

3 차단

4, 대기

5, TIMED_WAITING

(6) 말단

높은 CPU 비아 오 결과 실제 무한 루프

  • 보기 CPU 부하 :
top //查看laod average,发现cpu非常高;
  • 상단 목록에서 높은 CPU 사용량 프로세스 찾기
  • jstack을 PID> xxx.txt, 인쇄 정보 jstack을하는 과정 xxx.txt 파일로하여
  • 내부 자원 분석을 위해 점유 스레드를 처리하는 :
top -p PID -H   #查看某个进程内部线程占用情况

찾을 다섯 개 스레드 점유 CPU는 매우 높은 :

1569714766323

  • PID를 (10 진수) 소수 변환에도 아웃 분석 :
printf "%x" 8247
2037
  • jstack을 정보의 수출 단계 이전 문서에서 16 진수 PID의 전환의 마지막 단계를 검색

    0x2037은 16 진수를 나타냅니다 : 2037

    밖으로 검색하면 스택 정보의 스레드를 볼 수 있습니다

    1569715297769

실제 CPU가 급등의 원인이 교착 상태

  • 보기 프로젝트 프로세스 ID

    ps -ef | grep tomcat
  • jstack을 PID> xxx.txt, 인쇄 정보 jstack을하는 과정 xxx.txt 파일로하여
  • 텍스트의 끝을 당기면

1569716077324

분석 도구는 정확하게 교착 상태와 위치의 존재 프로젝트를 찾을 수 있습니다

추천

출처www.cnblogs.com/xujie09/p/jvm.html