자바 성능 튜닝
자바 성능 향상을 위한 완벽 가이드
자바 전문가인 스캇 오크스가 JVM에서 코드가 동작하는 방법뿐만 아니라 튜닝을 통해 성능이 개선되는 방법도 함께, 자바로 작업하는 이라면 누구나 이해할 수 있게끔 설명하고 있는 책이다. 책은 여러 상황에 대한 경험과 직관을 갖도록 해주는 것보다는 시간이 흐르면서 훌륭한 자바 성능 엔지니어에게 필요한 기술을 개발하는 데 도움될 지식을 주는 것을 목표로 한다. 책은 크게 두 개의 카테고리로 나눠 자바 가상 머신(JVM) 자체의 성능과 자바 플랫폼의 특성이 성능에 어떻게 영향을 미치는지 이해하는 것으로 이루어져 있다.
Couldn't load pickup availability
출판사 리뷰
출판사 리뷰
코딩과 테스트는 흔히 별도의 전문 분야로 여겨진다. 저자이자 자바 전문가인 스캇 오크스는 JVM에서 코드가 동작하는 방법뿐만 아니라 튜닝을 통해 성능이 개선되는 방법도 함께, 자바로 작업하는 이라면 누구나 이해할 수 있게끔 이 책에서 설명한다.
언어와 API를 포괄한 자바 가상 머신(JVM)과 자바 플랫폼을 이용해서 자바 애플리케이션의 성능에 대한 깊은 지식을 습득하자. 개발자나 성능 엔지니어 모두, 이 완벽 가이드를 통해 자바 7과 8 애플리케이션이 동작하는 방법을 개선하기 위한 다양한 특징과 도구와 절차를 배울 수 있다.
- 성능 테스트를 통해 최적의 결과를 얻기 위한 네 가지 원칙을 적용한다.
- 자바 애플리케이션이 동작하고 있는 방식에서 데이터를 수집하기 위해 JDK 도구를 사용한다.
- JIT 컴파일러 사용에 따른 장점과 단점을 이해한다.
- 프로그램에 최소한 적게 영향을 주도록 JVM 가비지 컬렉터를 조정한다.
- 힙 메모리와 JVM 네이티브 메모리를 관리하는 기술을 사용한다.
- 자바 스레드와 동기화 성능 기능을 최대한 활용한다.
- 자바 EE와 자바 SE에서의 성능 이슈를 다룬다.
- 자바 위주의 데이터베이스 애플리케이션 성능을 향상시킨다.
독자대상
초중급
출판사 리뷰
이 책은 여러 상황에 대한 경험과 직관을 갖도록 해주는 것보다는 시간이 흐르면서 훌륭한 자바 성능 엔지니어에게 필요한 기술을 개발하는 데 도움될 지식을 주는 것을 목표로 한다. 즉 독자가 자바 플랫폼의 성능 측면에서 철저하고 상세하게 이해할 수 있도록 도움을 주고자 한다.
이 지식은 두 개의 큰 카테고리로 나뉜다. 첫 번째는 자바 가상 머신(JVM) 자체의 성능이다. JVM 설정 방식은 프로그램의 성능상 많은 측면에 영향을 준다. 사실 C++ 프로그래머가 컴파일하는 동안 컴파일러의 플래그를 찾아서 테스트하고, PHP 개발자가 php.ini 파일에 적절한 변수를 설정하는 등의 작업과 JVM을 튜닝하는 일은 거의 유사할 수 있으나, 다른 언어로 개발한 경험이 있는 개발자는 다소 귀찮다고 생각한 튜닝의 필요성을 느낄지도 모른다.
두 번째는 자바 플랫폼의 특성이 성능에 어떻게 영향을 미치는지 이해하는 것이다. 워드 플랫폼의 용도를 보자. 일부 특성(예 스레드와 동기화)은 언어 영역이고, 일부 특성(예 XML 파싱 성능)은 스탠다드 자바 API 영역이다. 자바 언어와 자바 API에는 중요한 차이점이 있음에도 이들은 유사하게 여겨질 것이다. 이 책은 플랫폼의 양쪽 측면을 모두 다룬다.
JVM의 성능은 튜닝 플래그에 의해 크게 좌우되는 반면 플랫폼의 성능은 애플리케이션 코드 내에 최적의 사례들을 적용하는 데 더욱 영향을 받는다. 개발자가 코드를 짜고 성능 담당자들이 테스트를 하는 환경에서 이 업무는 별개의 전문 영역으로 간주되곤 한다. 성능 엔지니어들만이 최후의 성능까지 짜내도록 JVM을 튜닝할 수 있으며, 개발자들만이 코드가 잘 작성됐는지 걱정한다. 이렇게 구분하는 게 좋은 건 아니다. 자바로 작업하는 사람이라면 누구나 똑같이 코드가 JVM 내에서 동작하는 방식과 성능에 도움이 되는 튜닝의 종류에 관해 능숙하게 이해해야만 한다. 영역에서의 완전한 지식이야말로 여러분의 작업에 예술적인 멋을 부여할 것이다.
누가 이 책을 읽어야 하는가
이 책은 JVM의 다양한 측면과 자바 API가 성능에 영향을 주는 방식을 이해하고자 하는 성능 엔지니어와 개발자를 대상으로 구성됐다.
저자의 목표는 초보 엔지니어가 자바 애플리케이션의 성능 원칙을 이해할 수 있을 정도의 충분한 정보와 기본적인 튜닝을 하는 방법을 제공하는 것이다. 하지만 시스템 분석이란 매우 광범위한 분야다. 시스템 분석을 위한 훌륭한 자원(그리고 물론 자바에 적용할 원칙)은 많으며, 그런 관점에서 관련 정보를 찾는 이들에게 이 책이 유용한 동반자가 되길 바란다.
이 책에서는 컴파일러와 가비지 컬렉터 등을 위한 튜닝 플래그들과 API의 베스트 프랙티스 이용에 대해 다룬다. 따라서 이 책을 읽는 독자들은 자바로 프로그램을 작성하는 방법에 대해 충분히 이해하고 있다고 가정한다. 독자들의 주요 관심사가 자바의 프로그래밍 관점이 아니라고 해도 데이터 관련 사항을 많이 제공하기 위해 예제로 사용된 샘플을 포함해서 프로그램들을 다루는 데 꽤 시간을 들였다. 그러므로 독자들의 주요 관심이 JVM 성능 그 자체에 있거나 (코딩을 통해서가 아니라) JVM의 동작을 변경하는 방법에 있더라도 이 책의 내용이 도움이 될 것이다. 코딩 파트는 거리낌 없이 넘어가고 각자가 흥미를 갖는 내용에 집중하자. 그렇게 따라가다 보면 자바 애플리케이션이 JVM 성능에 영향을 줄 수 있는 방식에 관해 통찰력을 얻고, 개발자에게 변화를 제시하기 시작하여 여러분의 성능 테스트에서의 삶이 더 수월하도록 만들어줄 것이다.
목차
목차
- 개요
- 플랫폼과 규약
- 완벽한 성능 이야기
- 요약
2장. 성능 테스트 접근법
- 실제 애플리케이션을 테스트하자
- 처리율 및 배치와 응답 시간 이해하기
- 변동성 이해하기
- 빠르게 자주 테스트하자
- 요약
3장. 자바 성능 도구 상자
- 운영체제 도구와 분석
- 자바 모니터링 도구
- 프로파일링 도구
- 자바 미션 컨트롤
- 요약
4장. JIT 컴파일러로 작업하기
- 저스트 인 타임 컴파일러: 개요
- 기본 튜닝: 서버나 클라이언트(또는 둘 다)
- 자바와 JIT 컴파일러 버전
- 컴파일러를 위한 중급 튜닝
- 고급 컴파일러 튜닝
- 역최적화
- 티어드 컴파일 레벨
- 요약
5장. 가비지 컬렉션 입문
- 가비지 컬렉션 개요
- 기본 GC 튜닝
- GC 도구
- 요약
6장. 가비지 컬렉션 알고리즘
- 처리율 컬렉터 이해하기
- CMS 컬렉터 이해하기
- G1 컬렉터 이해하기
- 고급 튜닝
- 요약
7장. 힙 메모리 베스트 프랙티스
- 힙 분석
- 메모리 적게 사용하기
- 객체 생명 주기 관리
- 요약
8장. 네이티브 메모리 베스트 프랙티스
- 차지 공간
- 운영체제를 위한 JVM 튜닝
- 요약
9장. 스레딩과 동기화 성능
- 스레드 풀과 ThreadPoolExecutors
- ForkJoinPool
- 스레드 동기화
- JVM 스레드 튜닝
- 스레드와 락 모니터링하기
- 요약
10장. 자바 엔터프라이즈 에디션 성능
- 기본 웹 컨테이너 성능
- 스레드 풀
- 엔터프라이즈 자바 세션 빈
- XML과 SJON 처리
- 객체 직렬화
- 자바 EE 네트워킹 API
- 요약
11장. 데이터베이스 성능 베스트 프랙티스
- JDBC
- JPA
- 요약
12장. 자바 SE API 팁
- 버퍼에 의한 입출력
- 클래스로딩
- 난수
- 자바 네이티브 인터페이스
- 예외 처리
- 문자열 성능
- 로깅
- 자바 컬렉션 API
- AggressiveOpts
- 람다와 익명 클래스
- 스트림과 필터 성능
- 요약
부록 A. 튜닝 플래그 요약
저자
저자
Your payment information is processed securely. We do not store credit card details nor have access to your credit card information.

