JVM 밑바닥까지 파헤치기 (자동 메모리 관리, 실행 서브시스템, 컴파일, 동시성)

JVM 밑바닥까지 파헤치기 (자동 메모리 관리, 실행 서브시스템, 컴파일, 동시성)

$46.13
Description
“자바 가상 머신의 깊숙한 내부를 향해 떠나는 흥미진진한 모험”C·C++를 사용해 주로 프로그래밍을 하던 시절 까다로운 메모리 관리와 플랫폼 이식성 문제는 개발자들에게 적지 않은 부담이었다. 그런 상황에서 “한 번 작성하면 어디서든 실행된다”라는 구호와 함께 등장한 자바는 획기적인 언어로 여겨졌다. 그리고 그 구호를 현실로 만든 토대가 된 기술이 바로 자바 가상 머신(JVM)이다.
JVM 덕분에 개발자들은 자동 메모리 관리와 플랫폼 독립성이라는 선물을 받은 듯했지만 낮은 성능과 메모리 부족 오류 같은 대가를 치러야 했다. 그리고 오늘날까지도 그런 문제에서 자유롭지 못한 것이 현실이다. 이러한 문제를 해결하려면 JVM이 복잡한 저수준 문제를 어떻게 처리하는지 그 핵심 원리를 익혀야 한다.
《JVM 밑바닥까지 파헤치기》는 JVM의 네 가지 주요 주제라 할 수 있는 자동 메모리 관리, 실행 서브시스템, 컴파일, 동시성의 핵심 동작 원리를 살펴보면서 이러한 원리들이 실제 자바로 작성된 소프트웨어가 실행되는 데 어떤 식으로 영향을 미치며, 개발 현장에서 부딪히는 문제들에 JVM 동작 메커니즘을 어떤 식으로 적용해 볼 수 있을지 소개하고 있다.
먼 옛날 아기자기한 애플릿을 만들던 시절을 지나 이제는 인터넷 세상의 한편을 떠받치는 언어로 성장한 자바를 이용해 탄탄한 시스템을 구축하고자 하는 개발자들은 이 책을 통해 많은 아이디어와 영감을 얻을 수 있을 것이다.
저자

저우즈밍

원광소프트웨어연구소(YGSOFT) 소장. 오픈 소스 기술의 적극적인 옹호자이자 홍보자이며, 특히 인공 지능, 자바, 엔터프라이즈 개발, 애자일 등 분야에 깊은 통찰력을 가지고 있다. 〈InfoQ〉와 〈IBM DeveloperWorks〉에 기술 칼럼을 여러 편 기고했다. 지은 책으로는 《JVM 밑바닥까지 파헤치기》와 《OSGi 심층 이해》 등이 있으며, 《자바 가상 머신 명세》를 중국어로 번역했다. 《JVM 밑바닥까지 파헤치기》 초판은 2011년에 출간된 후 개정을 거듭하며 수십만 부가 판매되어 중국 컴퓨터 서적 분야에서 보기 드문 걸작으로 인정받고 있다.

목차

옮긴이의 말
서문
감사의 말

1부 자바와 친해지기
1장 자바 기술 시스템 소개
1.1 들어가며
1.2 자바 기술 시스템
1.3 자바의 과거와 현재
1.4 자바 가상 머신 제품군
1.5 자바 기술의 미래
1.6 실전: 내 손으로 빌드하는 JDK
1.7 마치며

2부 자동 메모리 관리
2장 자바 메모리 영역과 메모리 오버플로
2.1 들어가며
2.2 런타임 데이터 영역
2.3 핫스팟 가상 머신에서의 객체 들여다보기
2.4 실전: OutOfMemoryError 예외
2.5 마치며
3장 가비지 컬렉터와 메모리 할당 전략
3.1 들어가며
3.2 대상이 죽었는가?
3.3 가비지 컬렉션 알고리즘
3.4 핫스팟 알고리즘 상세 구현
3.5 클래식 가비지 컬렉터
3.6 저지연 가비지 컬렉터
3.7 적합한 가비지 컬렉터 선택하기
3.8 실전: 메모리 할당과 회수 전략
3.9 마치며
4장 가상 머신 성능 모니터링과 문제 해결 도구
4.1 들어가며
4.2 기본적인 문제 해결 도구
4.3 GUI 도구
4.4 핫스팟 가상 머신 플러그인과 도구
4.5 마치며
5장 최적화 사례 분석 및 실전
5.1 들어가며
5.2 사례 분석
5.3 실전: 이클립스 구동 시간 줄이기
5.4 마치며

3부 가상 머신 실행 서브시스템
6장 클래스 파일 구조
6.1 들어가며
6.2 플랫폼 독립을 향한 초석
6.3 클래스 파일의 구조
6.4 바이트코드 명령어 소개
6.5 설계는 공개, 구현은 비공개
6.6 클래스 파일 구조의 진화
6.7 마치며
7장 클래스 로딩 메커니즘
7.1 들어가며
7.2 클래스 로딩 시점
7.3 클래스 로딩 처리 과정
7.4 클래스 로더
7.5 자바 모듈 시스템
7.6 마치며
8장 바이트코드 실행 엔진
8.1 들어가며
8.2 런타임 스택 프레임 구조
8.3 메서드 호출
8.4 동적 타입 언어 지원
8.5 스택 기반 바이트코드 해석 및 실행 엔진
8.6 마치며
9장 클래스 로딩과 실행 서브시스템, 사례와 실전
9.1 들어가며
9.2 사례 연구
9.3 실전: 원격 실행 기능 직접 구현하기
9.4 마치며
4부 컴파일과 최적화
10장 프런트엔드 컴파일과 최적화
10.1 들어가며
10.2 javac 컴파일러
10.3 자바 편의 문법의 재미난 점
10.4 실전: 플러그인 애너테이션 처리기 제작
10.5 마치며
11장 백엔드 컴파일과 최적화
11.1 들어가며
11.2 JIT 컴파일러
11.3 AOT 컴파일러
11.4 컴파일러 최적화 기법
11.5 실전: 그랄 컴파일러 깊이 이해하기
11.6 마치며
5부 효율적인 동시성
12장 자바 메모리 모델과 스레드
12.1 들어가며
12.2 하드웨어에서의 효율과 일관성
12.3 자바 메모리 모델
12.4 자바와 스레드
12.5 자바와 가상 스레드
12.6 마치며
13장 스레드 안전성과 락 최적화
13.1 들어가며
13.2 스레드 안전성
13.3 락 최적화
13.4 마치며
부록 약어 목록
찾아보기

출판사 서평

“자바가상머신의깊숙한내부를향해떠나는흥미진진한모험”

C·C++를사용해주로프로그래밍을하던시절까다로운메모리관리와플랫폼이식성문제는개발자들에게적지않은부담이었다.그런상황에서“한번작성하면어디서든실행된다”라는구호와함께등장한자바는획기적인언어로여겨졌다.그리고그구호를현실로만든토대가된기술이바로자바가상머신(JVM)이다.
JVM덕분에개발자들은자동메모리관리와플랫폼독립성이라는선물을받은듯했지만낮은성능과메모리부족오류같은대가를치러야했다.그리고오늘날까지도그런문제에서자유롭지못한것이현실이다.이러한문제를해결하려면JVM이복잡한저수준문제를어떻게처리하는지그핵심원리를익혀야한다.
《JVM밑바닥까지파헤치기》는JVM의네가지주요주제라할수있는자동메모리관리,실행서브시스템,컴파일,동시성의핵심동작원리를살펴보면서이러한원리들이실제자바로작성된소프트웨어가실행되는데어떤식으로영향을미치며,개발현장에서부딪히는문제들에JVM동작메커니즘을어떤식으로적용해볼수있을지소개하고있다.
먼옛날아기자기한애플릿을만들던시절을지나이제는인터넷세상의한편을떠받치는언어로성장한자바를이용해탄탄한시스템을구축하고자하는개발자들은이책을통해많은아이디어와영감을얻을수있을것이다.