- 평점평점점평가없음
- 저자벤저민 J. 에번스 외 지음, 이일웅 옮김
- 출판사한빛미디어
- 출판일2019-04-28
- 등록일2019-11-06
- 파일포맷pdf
- 파일크기8 M
- 지원기기
PCPHONETABLET 프로그램 수동설치전자책 프로그램 수동설치 안내
아이폰, 아이패드, 안드로이드, 태블릿, PC
책소개
자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기
성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고급 자바 개발자에게 정량적이고 검증 가능한 접근 방식으로 자바 애플리케이션 성능을 튜닝하는 방법을 알려준다.
성능 튜닝은 원하는 결과를 정의하고 결정하는 과정이다. 자바 성능에 관한 대부분 자료는 자바 가상 머신 이론과 내부의 모습을 살펴보는 데 그치지만, 이 책은 레시피, 팁/트릭, 알고리즘 등 다양한 부문을 살펴보며 성능 튜닝의 실용적 측면을 이야기한다.
자바는 초기 버전 탄생 이후, 엄청난 변화를 거듭해왔다. 처음부터 고성능 언어로 설계된 건 아니었지만 무한한 발전을 거치며 현재 많은 개발자에게 사랑받는 언어가 되었다. 자바가 이처럼 새로운 영역으로 가능성을 넓히는 중에 코어 자바 플랫폼, 커뮤니티, 생태계는 늘 건강하고 활기가 넘친다.
메트로폴리스, 그랄 같은 대담한 신 계획은 코어 VM을 재구성하고 있다. invokedynamic 명령어는 핫스팟이 자체 한계의 틈새를 비집고 나와 다음 10년을 향한 새로운 모습으로 탈바꿈할 수 있게 했다. 자바는 값 타입을 추가하고, 복잡하기 짝이 없는 제네릭스 문제와 다시 씨름하는 등 거침없이 변화할 준비가 되었다.
자바/JVM 성능은 아주 역동적인 분야고 아직도 여러 분야에서 진보의 노력이 진행 중이다. 자바/네이티브 코드 상호작용, 오라클 ZGC 등 새로운 가비지 수집기를 비롯해 수많은 프로젝트가 진행되고 있다.
성능 엔지니어나 개발자가 알아야 할 지식은 실로 광범위하다. 이 책이 독자를 자바 성능의 세계로 친절히 안내하고 훌륭한 이정표를 제공하는 길잡이가 되길 바란다.
주요 내용
- 최신 하드웨어 및 운영체제를 최대한 활용하는 자바 원리와 기술을 배운다.
- 다양한 성능 테스트 방법과 팀원들을 애태우게 만드는 일반적인 안티패턴을 살펴본다.
- 자바 성능 수치를 측정할 때 빠지기 쉬운 함정과 마이크로벤치마킹의 단점을 이해한다.
- JVM 가비지 수집(로깅, 모니터링, 튜닝, 툴 등)의 세계를 탐험한다.
- JIT 컴파일과 자바 언어의 성능 향상 기법을 탐구한다.
- 자바 컬렉션 API를 성능 측면에서 고찰하고 자바 동시성을 알아본다.
저자소개
자바 개발자 및 저자이다. 워릭 대학교에 다니던 중 처음 자바에 매료되어, 졸업 후 런던 자바 커뮤니티에 가입했고 그때부터 이 커뮤니티를 중심으로 수년간 JSR-310 설계/테스트를 담
당하며 JCP 집행 위원회에서 활동해왔다. 콘퍼런스 상임 연사이기도 한 그는 현재 모건 스탠리에서 고객 응대 기술 구축에 매진하고 있으며, 세계 각지를 돌며 다양한 나라에서 오랫동안 자바, C++를 가르치고 있다.
목차
CHAPTER 1 성능과 최적화
1.1 자바 성능: 잘못된 방법
1.2 자바 성능 개요
1.3 성능은 실험과학이다
1.4 성능 분류
1.5 성능 그래프 읽기
1.6 마치며
CHAPTER 2 JVM 이야기
2.1 인터프리팅과 클래스로딩
2.2 바이트코드 실행
2.3 핫스팟 입문
2.4 JVM 메모리 관리
2.5 스레딩과 자바 메모리 모델(JMM)
2.6 JVM 구현체 종류
2.7 JVM 모니터링과 툴링
2.8 마치며
CHAPTER 3 하드웨어와 운영체제
3.1 최신 하드웨어 소개
3.2 메모리
3.3 최신 프로세서의 특성
3.4 운영체제
3.5 단순 시스템 모델
3.6 기본 감지 전략
3.7 가상화
3.8 JVM과 운영체제
3.9 마치며
CHAPTER 4 성능 테스트 패턴 및 안티패턴
4.1 성능 테스트 유형
4.2 기본 베스트 프랙티스
4.3 성능 안티패턴 개요
4.4 성능 안티패턴 카탈로그
4.5 인지 편향과 성능 테스트
4.6 마치며
CHAPTER 5 마이크로벤치마킹과 통계
5.1 자바 성능 측정 기초
5.2 JMH 소개
5.3 JVM 성능 통계
5.4 통계치 해석
5.5 마치며
CHAPTER 6 가비지 수집 기초
6.1 마크 앤 스위프
6.2 핫스팟 런타임 개요
6.3 할당과 수명
6.4 핫스팟의 가비지 수집
6.5 병렬 수집기
6.6 할당의 역할
6.7 마치며
CHAPTER 7 가비지 수집 고급
7.1 트레이드오프와 탈착형 수집기
7.2 동시 GC 이론
7.3 CMS
7.4 G1
7.5 셰난도아
7.6 C4(아줄 징)
7.7 밸런스드(IBM J9)
7.8 레거시 핫스팟 수집기
7.9 마치며
CHAPTER 8 GC 로깅, 모니터링, 튜닝, 툴
8.1 GC 로깅 개요
8.2 로그 파싱 툴
8.3 GC 기본 튜닝
8.4 Parallel GC 튜닝
8.5 CMS 튜닝
8.6 G1 튜닝
8.7 jHiccup
8.8 마치며
CHAPTER 9 JVM의 코드 실행
9.1 바이트코드 해석
9.2 AOT와 JIT 컴파일
9.3 핫스팟 JIT 기초
9.4 코드 캐시
9.5 간단한 JIT 튜닝법
9.6 마치며
CHAPTER 10 JIT 컴파일의 세계로
10.1 JITWatch란?
10.2 JIT 컴파일 개요
10.3 인라이닝
10.4 루프 펼치기
10.5 탈출 분석
10.6 단형성 디스패치
10.7 인트린직
10.8 온-스택 치환
10.9 세이프포인트 복습
10.10 코어 라이브러리 메서드
10.11 마치며
CHAPTER 11 자바 언어의 성능 향상 기법
11.1 컬렉션 최적화
11.2 List 최적화
11.3 Map 최적화
11.4 Set 최적화
11.5 도메인 객체
11.6 종료화 안 하기
11.7 메서드 핸들
11.8 마치며
CHAPTER 12 동시 성능 기법
12.1 병렬성이란?
12.2 JMM의 이해
12.3 동시성 라이브러리 구축
12.4 동시 라이브러리 정리
12.5 실행자와 태스크 추상화
12.6 최신 자바 동시성
12.7 마치며
CHAPTER 13 프로파일링
13.1 프로파일링 개요
13.2 샘플링과 세이프포인팅 편향
13.3 개발자용 프로파일링 툴
13.4 최신 프로파일러
13.5 할당 프로파일링
13.6 힙 덤프 분석
13.7 마치며
CHAPTER 14 고성능 로깅 및 메시징
14.1 로깅
14.2 성능에 영향이 적은 로거 설계하기
14.3 리얼 로직 라이브러리를 이용해 지연 줄이기
14.4 마치며
CHAPTER 15 자바 9와 미래
15.1 자바 9에서 소소하게 개선된 성능
15.2 자바 10과 그 이후 버전
15.3 자바 9 Unsafe 그 너머
15.4 발할라 프로젝트와 값 타입
15.5 그랄과 트러플
15.6 바이트코드의 향후 발전 방향
15.7 동시성의 향후 발전 방향
15.8 마치며