DevBook
-
14장. 고성능 로깅 및 메시징DevBook/Optimizing Java 2024. 7. 31. 08:24
개요지연에 민감한 고성능 어플리케이션을 다룰 때 개발자가 해결해야 하는 일반적인 이슈 몇가지를 살펴보고, 이런 시스템에는 어떤 요건이 있고 어떠한 방식으로 설계해야 하는지 안내함저지연, 고성능 시스템에서 핵심적인 고려사항 2가지는 로깅과 메시징 14.1 로깅다른 라이브러리와 마찬가지로 로깅 라이브러리도 프로젝트 도입 전 신중한 확인이 필요하다. 14.1.1 로깅 벤치마크가장 많이 쓰는 세가지 로거(Logback, Log4j, java.util.logging)의 성능을 비교하는 벤치마크를 살펴보자 방식해당 자료를 사용해 벤치마크 수행해당 프로젝트는 여러 가지 설정으로 다중 로거를 실행 가능한 벤치마크 제공함 로깅 포맷1) Logback 포맷14:18:17.635 [Name Of Thread] INFO c..
-
CH10. JIT 컴파일의 세계로DevBook/Optimizing Java 2024. 6. 24. 00:29
JIT 컴파일은 JVM뿐만 아니라 많은 현대 프로그래밍 환경에 적용되어 온 기술이다.JIT 컴파일러는 달라도 적용된 기술은 동일한 경우가 많다. 이번 장에서는 JITWatch라는 툴을 이용해 JVM의 내부 작동 원리를 시각화한다.구체적인 JIT 최적화 알고리즘과 각각의 특성을 살펴보고 이런 기법들이 어떤 작용을 하는지 JITWatch로 관찰한다. 10.1 JITWatch란?JITWatch를 이용하면, 어플리케이션 실행 중에 핫스팟이 실제로 바이트코드에 무슨 일을 했는지 이해하는 데 도움이 됨반드시 핫 패스(hot path)에 있는 컴파일 대상 메서드를 분석 대상으로 삼아야 함. 인터프리티드 메서드는 최적화 대상으로 적절하지 않음*핫 패스 : 프로그램 중 매우 빈번하게 호출/실행되는 코드 경로JITWatc..
-
CH2. JVM 이야기DevBook/Optimizing Java 2024. 4. 14. 00:13
이 장에서는 JVM이 자바 코드를 실행하는 방법을 소개한다. 성능을 공부하려면, 기본 JVM 기술 스택의 구조를 알아야 한다. 들어가기 전에, JVM을 큰 그림으로 한번 보자. 2.1 인터프리팅과 클래스로딩 JVM은 스택 기반의 해석 머신임 레지스터는 없지만 일부 결과를 실행 스택에 보관하며, 이 스택의 맨 위에 쌓인 값들을 가져와 계산을 함 1) 인터프리팅 JVM 인터프리터(해석기)의 기본 로직은 'while 루프 안의 switch문' 으로 비유할 수 있음 이는 JVM이 바이트코드를 실행하는 방식을 설명하기 위한 비유임 각 바이트코드에 대한 실행 로직은 switch문에서 결정되며, while 루프를 통해 계속해서 새로운 바이트코드를 읽어들여 실행함 while 루프 프로그램이 계속해서 실행되는 루프 JV..
-
CH1 성능과 최적화DevBook/Optimizing Java 2024. 4. 9. 00:52
알아볼 내용 경험적 과학, 측정에 관한 기본적인 토픽들 성능 활동 수행 시 필요한 기본 용어들과 측정값에 대한 설명 성능 테스트를 하며 흔히 볼 수 있는 몇 가지 사례 1.1 자바 성능: 잘못된 방법 시간이 지나면서 가상 디스패치 성능은 엄청나게 좋아졌고, 특히 최신 JVM에서는 자동 인라이닝(automatic managed inlining) 덕분에 가상 디스패치조차 대부분의 호출부(call site)에서 사라지게 되었음 이 책에서는 우수한 성능 목표를 달성하기 위해 필요한 여러 가지 단면을 종합적으로 집중 조명하고자 함 전체 소프트웨어 수명주기의 성능 방법론 성능과 연관된 테스트 이론 측정, 통계, 툴링(tooling) (시스템 + 데이터) 분석 스킬 하부 기술과 메커니즘(mechanism) 일반적인 ..