자바 최적화 - 가장 빠른 성능을 구현하는 검증된 10가지 기법
벤저민 J. 에번스 외 지음, 이일웅 옮김 / 한빛미디어 / 2019년 4월
평점 :
장바구니담기


평소 프로그램을 개발할 때, 기능 구현이 모두 완료된 후 반드시 리팩토링 과정을 거치곤 합니다. 디버깅 할 때 삽입되었던 코드 또는 레거시 코드들을 정리하기 위해서죠. 하지만 '최적화' 하여 프로그램의 성능을 향상시키기엔 실력도, 개념도 많이 부족했습니다. 섣불리 최적화를 하겠다고 나섰다가 다시 코드 버전을 되돌렸던 적도 있어서, 이후로 최적화를 시도할 엄두를 내지 못했습니다. 또한 자바 개념서들은 많이 출판되어 있지만 저처럼 최적화에 대해 잘 모르는 개발자들이 볼 수 있는 국문 서적은 쉽게 찾아볼 수 없었습니다. 그러던 중, 이번에 한빛미디어에서 자바 최적화 번역서를 펴냈기에 바로 읽어보았습니다.



[자바 최적화 : 가장 빠른 성능을 구현하는 검증된 10가지 기법]

http://www.hanbit.co.kr/store/books/look.php?p_code=B7707787549

목차 ▼

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 마치며

목차 ▲


[이 책은]


 

이 책은 저명한 자바 개발자들이 직접 펴내고, 수 년 간 자바/스칼라 개발자께서 옮긴 믿을 수 있는 번역서입니다.

어떤 번역서들은 영어 단어를 읽은 발음을 국어로 옮겨 적어 쉽게 읽히지 않지만 이 책은 자바 용어를 제외하고는 매끄럽게 읽혀 좋았습니다.



 


먼저 NOTE 부분입니다.

본문에 보충할 부분이나 본문과 연관된 팁들이 적혀 있는 란입니다.

책을 읽으며 학습할 때 쉬어가는 부분도 되어 주고, 여러 꿀팁들도 얻을 수 있습니다.

개인적으로는 관련 정보를 얻을 때 유용하게 사용하고 있는 부분입니다.




 

개념을 가시화해 준 부분입니다. 

수명 주기나 코드 작동 순서, 작성한 코드가 어떤 순서로 어디에 영향을 주며 실행되는지를 가시화해주어 훨씬 이해하기 편했습니다.

추가로, 사실 이번 책에서 좋았던 점은 과하지 않은 컬러였습니다.

제가 접했던 개발 도서들은 보통 흑백이었는데 이 책은 컬러가 입혀져 있어 좀 더 강조되는 부분을 확실히 알 수 있었습니다.


 

 


위와 같이 하드웨어 메모리 지원과 같은 부가 정보를 표로 잘 정리해 두어 내용을 한눈에 파악할 수 있게 된 점이 좋았습니다. 

여러 줄의 줄글보다도 위의 모식도나 표로 간략하게 표현된 것이 머릿속에 이미지로 확 들어오는 듯한 느낌입니다.

또한 번역한 단어 또는 용어를 각주와 주석으로 한번 더 기재해 주어 정확한 표현과 용어를 숙지할 수 있습니다.




성능 테스트 관련된 부분은 증상, 현실, 진단, 처방 등의 단계를 눈에 띄게 나눠 두어 이해하기 쉬웠습니다.

어떤 순서로 현상을 숙지하고, 어떻게 해결해야 하는지 아이디어를 얻을 수 있었습니다.




[책을 덮으며]

책을 정독한 후 코드 최적화로 프로그램의 메모리 사용량, 구동 속도를 개선할 수 있다는 자신감이 생겼습니다.

자바 기본 개념에서 파생된 최적화 방법이 잘 설명되어 있어 이해하기 편했습니다.

또한 여는 말에도 썼듯이 번역서임에도 불구하고 문장이 매끄러워 자연스럽게 읽어나갈 수 있었습니다.

이 책은 개발을 시작한 지 얼마 되지 않은 개발자보다는 자바라는 언어에 대한 기본 지식이 있고 이를 이용해 개발을 해 본 개발자들을 위한 도서라고 생각됩니다. 기본 개념을 알고 있어야 이해할 수 있는 내용들이 일부 있었고, 책의 난이도가 아주 쉽고 내용이 단순한 편은 아니었다고 생각합니다. 

자세한 내용은 상단 도서 링크 또는 가까운 서점에서 도서를 구매하시어 확인 부탁 드립니다! 




댓글(0) 먼댓글(0) 좋아요(2)
좋아요
북마크하기찜하기 thankstoThanksTo