* JVM 의 Flag
- Boolean Flag
xx : +FlagName -> 해당 설정 사용
xx : -FlagName -> 해당 설정 미사용
- Parameter Flag
- xx : FlagName = yy => 특정 값으로 Flag 설정
* Logger
- log.log(Level.Fine, "x = " + calcX() + " y = " + calcY());
: 로그 레벨과 관계없이 calcX(), calcY() 를 수행하게 됨
- if (log.isLoggable(Level.Fine)) {
log.log(Level.Fine, "x = {} y = {}", new Object[] { calcX(), calcY()});
}
: 메서드도 호출되지 않고, 배열 객체의 할당도 일어나지 않는다
* Client 처리율 단위
- TPS (Transactions Per Sec) : 초당 트랜잭션 수
- RPS (Requests Per Sec) : 초당 요청 수
- OPS (Operations Per Sec) : 초당 동작 수
* Unix 분석 도구
- SAR (System Accounting Report)
: vmstat, iostat, prstat 등과 같은 구성 도구
* CPU 사용률
- 사용자 시간
: CPU가 App을 실행하는 시간의 백분율
- 시스템 시간
: CPU가 Kernel 코드를 실행시키는 시간의 백분율 (Disk I/O, Network I/O 등)
> 사용률을 높이면 작업을 처리하는 시간이 단축된다
* 자바 모니터링 도구
- jconsole
: Thread 사용률, Class 사용률, GC 활동내역, JVM 활동 내역을 그래픽 형태로 노출
- jhat
: 메모리 힙 덤프를 읽고 보냄
- jmap
: 힙 덤프와 JVM 메모리 사용률 정보를 제공
- jinfo
: JVM 의 특성에 대해 가시성을 제공하고 일부 시스템 특성을 동적으로 설정
- jstack
: java process 스택 덤프를 생성가능
- jstat
: GC 와 클래스 로딩 활동에 대한 정보 제공
- jvisualvm
: JVM 모니터링 + App 프로파일링 + 힙 덤프 생성
* Compilation
- C++ & Fortran
: source -> (compile) -> Binary (Assembly) -> 특정 CPU 에서 실행됨 (AMd or Intel 등)
- PHP & Perl
: source -> (interpreted) -> Interpreter (한줄씩, Code -> Binary) -> 해당 인터프리터를 가진 CPU 에서 실행됨
- Java
: source -> (compile) -> Assembly (Java Bytecode) -> (execute) -> Java Binary 가 JVM 에서 실행됨
* Hotspot VM
* Tiered Compilation
- C1 Compiler (= Client Compiler)
- C2 Compiler (= Server Compiler)
> JVM 시작 시에는 C1 을 쓰고, 그 다음에 코드가 많이 호출되면 C2를 사용
* Escape Analysis
- Compiler 의 최적화 기법 중의 하나
- 예로, Heap 할당된 객체의 참조가 특정 함수 밖으로 벗어나지 않는다면 (escape 되지 않는다면), Stack 을 사용하는 Local 변수로 최적화 시킨다
* Dangling
- 동적할당(Heap 할당) 에서 Memory 가 해제된 곳을 가리키는 포인터
* Concurrent Collector (CMS, G1 (Garbage First))
- 미사용 객체를 훓어보는동안 App Thread 를 멈추지 않고 처리할 수 있음
'SW > SW 서적' 카테고리의 다른 글
조엘 온 소프트웨어 / 조엘 스포스키 / 에이콘출판 (0) | 2022.07.04 |
---|---|
///자바의 정석 (0) | 2020.10.04 |
★ 안드로이드 앱 성능 최적화 / 더그 실라스 / 로드북 (0) | 2020.03.08 |
완벽한 IT 인프라 구축을 위한 Docker / Asa Shiho / 정보문화사 (0) | 2020.01.13 |
☆자바 성능 튜닝 이야기 / 이상민 / 인사이트 (= 자바 성능을 결정짓는 코딩 습관과 튜닝 이야기 / 이상민 / 한빛미디어) (0) | 2020.01.13 |