728x90
💪 본 내용은 한국 소프트협회에서 직장인 대상 교육 및 다른 블로그를 읽고 정리한 내용입니다.
준비 사항
※ 실습 코드는 제외하고 작성했습니다.
- Eclipse 2022-09 + 설치
- MySQL 8.0 설치
- JDK 11
- Visual Studio Code - Editor
- Jmeter
수업 내용
목차
- JVM
- Stack & Heap
- 자바 기본
- Class Loader
- JVM JIT Compiler
--- 이하 2일차 --- - GC
- 성능 향상
- 성능 최적화
- GC & Heap
- 성능 튜닝
- 성능 테스트
작성 중 입니다...!!
GC
성능 향상
성능 최적화
GC & Heap
- 가비지 콜렉터의 대상이 되는 부분은 힙 영역이다.
- JVM이 운영하며 일반적으로 힙 메모리에 free한 메모리가 없으면 작동한다.
- 수행
- JVM의 목표는 가용 시스템 자원을 기반으로 힙에 대한 디폴트 초기값을 찾는 것이다.
- GC를 수행하는데 걸리는 시간을 기반으로 한다.
- 최대 값으로 힙의 크기를 변경한다.
- GC 로그 남기기
- 자바 수행 시 -verbose:gc 옵션을 사용
- GC 분석에서 가장 쉬운 명령어이다
- java softleak.ProductMain
- java -Xmx20m -verbose:gc softleak.ProductMain.
- GC Dump 분석
- OPtion
- -XX: HeapDumpOnOutOfMemoryError
- -XX:
- java -Xmx20m -verbose:gc -XX:+HeapDumpOnOutOfMemoryError softleak.ProductMain
- 코드를 수정하고 다시 위 명령어를 실행하면 문제가 없다.
성능 튜닝
1) 개요
- 성능을 측정하고 튜닝하려면
- JVM 구조, 메모리 관리, OS 기본
- 애플리케이션의 소프트웨어 아키텍처와 사용 된 프레임워크
- 성능 튜닝
- 애플리케이션 내부를 프로파일링 도구로 분석한다.
- 프로파일링 도구는 시스템 내부의 병목현상이 발생하는 지점을 찾는데 사용할 수 있다.
- 애플리케이션 내부를 프로파일링 도구로 분석한다.
2) 고려 사항
- CPU 속도 문제
- 객체 생성과 GC 수행은 CPU 점유율이 높기에 생명 주기 짧은 객체나 비효율적 알고리즘, 병목현상이 발생되는 곳을 찾는다.
- 메모리 문제
- 객체의 수가 많이 발생하거나, 배열의 크기가 큰 경우 등의 메모리 구조를 조사하여 사용량을 줄인다.
- DISK IO, 네트워크
- 디스크 IO 는 애플리케이션 속도 저하를 유발하므로 찾아내어 제거하거나 변경한다.
3) 성능 테스트
- 부하 테스트
- 일반적으로 수행하는 성능 테스트, 성능을 벤치 마크
- 스파이크 테스트
- 순간적으로 사용자 수를 증가시키는 방식
- 단위 성능 테스트
- 통합 성능 테스트
- 임계 성능 테스트
- 안정성 테스트
4) 모니터링 도구
- jcmd
- jinfo
- jinfo -flasg 프로세스 번호
- jstat
- jps
- 현재 실행 중인 JVM 목록을 보여준다.
5) 프로파일링 도구
자바 애플리케이션의 메모리/CPU 사용률과 IO 및 스레드 활동 등을 측정하고 분석하는 프로파일링 도구
- VisualVM
- 오라클 개발 도구,
- Jprofiler
- Eclipse Memory Analyz Tool(MAT)
- Java Mission COntrol
6)
성능 테스트
Heap Memory 를 DUMP 떠야한다?
'교육 > [온라인] KOSTA EDU' 카테고리의 다른 글
[KOSTA] Kafka with Spring Boot - 1편 (0) | 2024.07.12 |
---|---|
[KOSTA] Java 기반의 객체지향 프로그래밍 1주차 (0) | 2024.06.22 |
[KOSTA] 스프링 부트로 구현하는 메세징 시스템(RabbitMQ) (0) | 2024.05.24 |
[KOSTA] 도메인 모델 기반의 서비스 설계 (DDD) (0) | 2024.05.17 |
[KOSTA] 자바 코드의 성능 향상 - 1일차 (0) | 2024.02.22 |