일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- chatGPT's answer
- android
- 소프트웨어공학
- 리눅스
- lombok
- 파이썬
- 역학
- NIO
- GPT-4's answer
- write by GPT-4
- flet
- 자바네트워크
- JVM
- 고전역학
- 시스템
- 코틀린
- kotlin
- GIT
- 자바암호
- Java
- Database
- write by chatGPT
- 뉴턴역학
- 유닉스
- python
- Spring boot
- 웹 크롤링
- oracle
- 자바
- 인프라
- Today
- Total
Akashic Records
VM 분석 : Chapter 1 Performance - 2 / -Xrunprof 옵션 본문
VM 분석 : Chapter 1 Performance - 2 / -Xrunprof 옵션
Andrew's Akashic Records 2018. 4. 19. 14:43-Xrunprof 옵션
이 옵션은 단순히 텍스트 형태로 쓰레드 정보와 메소드 호출 점유율, 호출 횟수, 호출 쓰레드 번호등을 보여준다. 이 옵션은 어플리케이션의 성능 측정에서 병목점을 찾을 때 많이 사용한다.
병목점은 찾는 방법은 점유율(%)가 높으면서, 호출 횟수는 작은 순서가 병목점의 순서가 된다.
최근에는 이 옵션은 단순히 HAT(The Heep Analysis Tool)을 실행하기 위한 바이너리 타입의 기초 데이터를 생성(format=b 옵션)하는 용도로 많이 쓰이기도 한다.
[craftlee@hurukku testspace]$ java -Xrunhprof:help Hprof usage: -Xrunhprof[:help]|[:<option>=<value>, ...] Option Name and Value Description Default --------------------- ---------------------- ------- heap=dump|sites|all heap profiling all cpu=samples|times|old CPU usage off monitor=y|n monitor contention n format=a|b ascii or binary output a file=<file> write data to file java.hprof(.txt for ascii) net=<host>:<port> send data over a socket write to file depth=<size> stack trace depth 4 cutoff=<value> output cutoff point 0.0001 lineno=y|n line number in traces? y thread=y|n thread in traces? n doe=y|n dump on exit? y gc_okay=y|n GC okay during sampling y Example: java -Xrunhprof:cpu=samples,file=log.txt,depth=3 FooClass Note: format=b cannot be used with cpu=old|times |
일반적인 사용 옵션
- java -Xrunhprof <class>
- java -Xrunhprof:cpu=samples,thread=y <class>
- java -Xrunhprof:heap=sites <class>
- java -Xrunhprof:cpu=samples <class>
- java -Xrunhprof:cpu=samples,file=log.txt <class>
- java -Xrunhprof:cpu=samples,format=b <class>
실행 예) 위에서 만든 “wileUnit.class”을 이용한다.
1. java -Xrunhprof:cpu=samples,thread=y whileUnit 옵션으로 실행
THREAD START (obj=811a410, id = 1, name="Finalizer", group="system") THREAD START (obj=811a530, id = 2, name="Reference Handler", group="system") THREAD START (obj=811a5f8, id = 3, name="main", group="main") THREAD START (obj=813c9c8, id = 4, name="Signal Dispatcher", group="system") THREAD START (obj=813ca58, id = 5, name="HPROF CPU profiler", group="system") THREAD END (id = 3) THREAD START (obj=814daf8, id = 6, name="DestroyJavaVM", group="main") THREAD END (id = 6) TRACE 1: (thread=3) <empty> TRACE 2: (thread=3) whileUnit.exec(whileUnit.java:15) whileUnit.main(whileUnit.java:27) CPU SAMPLES BEGIN (total = 2) Mon Nov 22 12:59:32 2004 rank self accum count trace method 1 100.00% 100.00% 2 2 whileUnit.exec CPU SAMPLES END |
2. 위에서는 실행 메소드가 하나 뿐이 없어서 100%을 차지 하고있다.
3. java -Xrunhprof:heap=sites whileUnit 옵션으로 실행
percent live alloc'ed stack class rank self accum bytes objs bytes objs trace name 1 63.90% 63.90% 602072 234 602072 234 1 [I 2 16.32% 80.23% 153800 577 153800 577 1 [C 3 5.02% 85.25% 47280 230 47280 230 1 [B …. |
메모리에 점유율이 높은 객체 Ranking이 출력된다. 여기서 [I, [C, [B 타입은 Integer, Character, Byte 배열이다.
'오래된글 > Articles' 카테고리의 다른 글
VM 분석 : Chapter 2 VM의 구조와 튜닝 -1 (0) | 2018.04.19 |
---|---|
VM 분석 : Chapter 1 Performance - 2 / HAT (0) | 2018.04.19 |
VM 분석 : Chapter 1 Performance - 2 / JVMPI (0) | 2018.04.19 |
VM 분석 : Chapter 1 Performance - 2 / -Xverbosegc(HP 머신) (0) | 2018.04.19 |
VM 분석 : Chapter 1 Performance - 1 (0) | 2018.04.19 |