jstat을 사용한 Java 응용 프로그램의 메모리 측정
Java 사용 노트 크기 조사
Java 응용 프로그램에서 실제로 사용되는 메모리는 top 명령을 통해 가져올 수 없습니다.top 명령을 실행하더라도 JVM이 전체적으로 확보한 메모리 크기만 알 수 있습니다.
이번에는 jstat 도구를 사용하여 자바가 실제 사용하는 메모리 크기의 대략적인 값을 확인하는 방법을 설명합니다.이 방법을 사용하면 응용 프로그램을 수정하지 않은 상황에서 처리에 영향을 주지 않고 대략적인 사용 메모리를 볼 수 있다.
jstat의 준비
jstat는 Java 가상 시스템의 통계 데이터 감시 도구이다.JDK에 포함되어 있기 때문에 JDK를 설치하면 동시에 설치되어 사용됩니다.그러나 정식 문서가 시험적인 기능인 만큼 앞으로의 vrersion이 사라질 수 있으니 주의하세요.
해석용 프로그램
나는 적절하게 처리된 샘플 프로그램을 이동할 것이다.Java 시작 시 스택 메모리의 최대 및 최소 크기를 20GB로 지정하는 옵션을 설정합니다.
-Xms20G -Xmx20G
이것은 시작부터 끝까지 약 3000초가 걸리는 일괄 처리 프로그램이다.프로그램의 상세한 내용을 분리하다.
jstat 실행
샘플 응용 프로그램을 시작하면 jps 명령으로 응용 프로그램의 프로세스 ID를 확인합니다.
$ jps
29366 Jps
31781 sampleApp
SampleApp의 프로세스 ID는 31781입니다.나는 그 결과를 파일에 쓰기 위해 jstat 명령을 실행하고 싶다.다음 명령을 실행합니다.$ jstat -gcutil -t 31781 1000 > jstat.tsv
이번에는 1초마다 GC의 통계 정보와 응용 프로그램이 시작된 후의 시간 스탬프가 함께 표시됩니다.jstate.tsv라는 파일로 내보냅니다.jstat 명령에 대한 옵션은 공식 페이지를 참조하십시오.
jstat 명령의 출력
jstat 명령의 출력은 다음과 같습니다.
Timestamp S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
39.8 0.00 0.00 38.00 0.00 17.13 19.75 0 0.000 0 0.000 0.000
40.8 0.00 0.00 44.00 0.00 17.13 19.75 0 0.000 0 0.000 0.000
~~中略~~
3019.0 63.30 74.99 100.00 53.52 96.26 86.35 753 414.206 25 581.636 995.842
3020.0 78.67 74.99 100.00 53.52 96.26 86.35 753 414.206 25 581.636 995.842
노트 크기 분석 사용하기
jstat 명령의 출력에서 실제 메모리를 조사합니다.
메모리 사용의 대략적인 변화를 조사하려면 jstat 출력의 'O' (Old 영역 메모리 분배율 = 사용률) 항목에만 주목하면 됩니다.
"Timestamp"의 수치를 가로축으로 하고, "O"의 수치를 세로축으로 하는 도표는 다음과 같다.
이 도표에서 메모리의 사용량을 읽을 수 있습니다.다만, 딱 한 번 보면 메모리 할당률이 50%~10% 사이로 급격히 이동하기 때문에 잘 모르겠다.
Old 영역에서는 그 시간에 실제 사용된 데이터와 이미 사용되지 않은 데이터가 혼합되어 있기 때문에 그 중에서 사용된 데이터의 양만 찾아내면 된다.
위의 차트에서 Full GC의 작동 시간을 파란색 점선으로 겹친 차트는 다음과 같습니다.
Full GC가 발생하면 메모리 사용량이 감소할 것이라고 생각합니다.이FullGC 이후의 메모리 감소의 정시 메모리 분배율만 보면 응용 프로그램의 실제 메모리 사용량을 알 수 있다.
아래 그림에서 낮은 시간값은 빨간색 실선으로 연결됩니다.그리고 이 값은 대략적인 실제 사용 메모리의 추이가 되었다.
위의 도표를 확인함으로써 다음과 같은 것을 알 수 있을 것 같습니다.
이 방법의 간략한 설명
왜 Old 구역의 FullGC 뒤 사이즈만 봐도 메모리 사용량을 알 수 있습니까?
이해하려면 JVM의 메모리 관리 메커니즘을 알아야 한다. 다음은 매우 간단한 내용을 순서대로 설명한다.
총결산
jstat 명령을 사용하여 Java 응용 프로그램의 메모리 사용량을 확인하는 방법을 총괄하였다.
이 방법으로 각 처리된 메모리의 사용량을 대략적으로 확인한 후, 특히 메모리를 사용하는 처리에서 각 대상의 메모리 사용량을 조사하는 절차가 비교적 좋다.
Reference
이 문제에 관하여(jstat을 사용한 Java 응용 프로그램의 메모리 측정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/N_G/items/2dab8694fdebce2de868텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)