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
= 기본을 나타냅니다
: 사용자 또는 사용자에 의해 수정 JVM = 값
JPS
리눅스 PS 유사보기 자바 과정,
있는 jinfo
jinfo -flag MaxHeapSize xxxx(进程号) //查看最大堆内存
jinfo -flag UseConcMarkSweepGC xxx(进程号) //查看是否使用了这个GC
jinfo -flag UseG1GC xxx(进程号) //是否使用了G1回收器
jinfo -flag UseParallelGC xxx(进程号) //是否使用了并行回收器
그러면 jstat보기 가상 머신 통계
형식 :
options:-class,-compiler,-gc,-printcompilation
클래스 로더
보기 클래스 로더 정보 :
jstat -class xxx(进程号)
说明:
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 메모리 구조
메모리 매핑 파일을 내보내는 방법
메모리 오버 플로우가 자동으로 수출
设置两个参数:
-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는 매우 높은 :
- PID를 (10 진수) 소수 변환에도 아웃 분석 :
printf "%x" 8247
2037
jstack을 정보의 수출 단계 이전 문서에서 16 진수 PID의 전환의 마지막 단계를 검색
0x2037은 16 진수를 나타냅니다 : 2037
밖으로 검색하면 스택 정보의 스레드를 볼 수 있습니다
실제 CPU가 급등의 원인이 교착 상태
보기 프로젝트 프로세스 ID
ps -ef | grep tomcat
- jstack을 PID> xxx.txt, 인쇄 정보 jstack을하는 과정 xxx.txt 파일로하여
텍스트의 끝을 당기면
분석 도구는 정확하게 교착 상태와 위치의 존재 프로젝트를 찾을 수 있습니다