상세정보
미리보기
자바 잘 읽는 법 : 자바 코드를 이해하고, 디버깅하고, 최적화하는 요령
- 저자
- 라우렌치우 스필커 저/이일웅 역
- 출판사
- 제이펍
- 출판일
- 2024-06-14
- 등록일
- 2024-07-22
- 파일포맷
- PDF
- 파일크기
- 18MB
- 공급사
- 예스이십사
- 지원기기
-
PC
PHONE
TABLET
웹뷰어
프로그램 수동설치
뷰어프로그램 설치 안내
책소개
자바 버그와 성능 문제를 찾는 프로파일링, 디버깅, 로깅 기법 실무에서 개발자는 기존 코드를 읽고 이해하는 데 가장 많은 시간을 쓴다. 이 책은 익숙하지 않은 자바 코드를 파악하는 시간을 줄여주는 실용적인 기법들을 소개한다. 프로파일링과 디버깅, 나아가 JVM 애플리케이션이 실제로 어떻게 작동하는지 이해함으로써 디펜던시나 충돌의 근본 원인을 찾고, 예상치 못한 결과를 해석할 수 있다. 디버깅의 기초부터 마이크로서비스 아키텍처에서 문제를 찾기 위한 고급 방법까지, 딱딱하지 않은 그림과 흥미로운 실제 사례와 함께 자바 코드를 ‘잘 읽는 법’을 알려준다.
저자소개
엔다바(Endava)에서 전문 개발 리드이자 트레이너로 일하며 유럽, 미국, 아시아의 고객을 대상으로 하는 금융 시장 프로젝트의 개발을 이끌고 있다. 10년 이상의 경력이 있는 그는 고품질의 소프트웨어를 제공하는 것뿐만 아니라 지식을 공유하고 다른 이들의 역량 향상을 돕는 것이 중요하다고 믿는다. 이러한 신념은 그가 자바 기술 관련 코스를 설계하고 가르치며, 발표와 워크숍을 진행하도록 이끌었다.
목차
옮긴이 머리말 x베타리더 후기 xi시작하며 xiv감사의 글 xvi이 책에 대하여 xviii표지에 대하여 xxiPART I 트러블슈팅 기본 테크닉CHAPTER 1 앱에서 모호한 부분 밝히기 31.1 앱을 더 쉽게 이해하는 방법 41.2 일반적인 코드 조사 시나리오 8__1.2.1 예상과 다른 아웃풋의 원인을 밝힌다 9__1.2.2 특정 기술을 습득한다 14__1.2.3 속도 저하 이유를 알아낸다 15__1.2.4 앱 크래시가 발생하는 이유를 이해한다 161.3 이 책에서 배울 내용 19요약 20CHAPTER 2 디버깅 기법으로 앱 로직 이해하기 212.1 코드 분석만으로는 불충분한 경우 232.2 디버거를 이용한 코드 조사 26__2.2.1 실행 스택 트레이스란 무엇이고 어떻게 사용해야 할까? 31__2.2.2 디버거로 코드 탐색하기 362.3 디버거로도 충분하지 않다면 43요약 45CHAPTER 3 고급 디버깅 기법으로 문제의 근본 원인 찾기 473.1 조건부 브레이크포인트로 조사 시간 최소화 483.2 실행을 중단시키지 않고도 브레이크포인트를 사용하는 방법 523.3 조사 시나리오를 동적으로 변경하기 553.4 조사 케이스를 되감기 58요약 64CHAPTER 4 원격 앱 디버깅 654.1 원격 디버깅이란? 664.2 원격 환경에서 조사하기 69__4.2.1 시나리오 70__4.2.2 원격 환경의 문제 조사하기 71요약 81CHAPTER 5 로그를 활용하여 앱 동작 감시하기 835.1 로그를 이용하여 조사하기 87__5.1.1 로그에 기록된 예외 식별 88__5.1.2 예외 스택 트레이스로 어디서 메서드를 호출했는지 식별 89__5.1.3 멀티스레드 아키텍처에서 커맨드의 실행 시간 측정 91__5.1.4 멀티스레드 아키텍처에서 커맨드 실행 문제 조사 925.2 로깅을 구현하는 방법 94__5.2.1 로그 메시지 저장 94__5.2.2 로깅 레벨을 정의하고 로깅 프레임워크를 사용하는 방법 95__5.2.3 로깅 때문에 발생하는 문제와 예방 조치 1025.3 로그와 원격 디버깅 107요약 108PART II 트러블슈팅 고급 테크닉CHAPTER 6 프로파일링 기법으로 리소스 사용 문제 파악하기 1116.1 프로파일러는 어떤 경우에 유용할까? 112__6.1.1 비정상적인 리소스 사용량 식별 112__6.1.2 실행되는 코드 찾기 113__6.1.3 앱 실행 속도가 느려지는 원인을 파악 1146.2 프로파일러 사용 방법 114__6.2.1 VisualVM 설치 및 구성 115__6.2.2 CPU와 메모리 사용량 관찰 117__6.2.3 메모리 누수 현상 식별 127요약 132CHAPTER 7 프로파일링 기법으로 숨겨진 이슈 찾기 1337.1 샘플링으로 실행되는 코드 관찰 1347.2 프로파일링으로 메서드의 실행 횟수 파악 1427.3 프로파일러로 앱이 실제로 실행하는 SQL 쿼리 파악 144__7.3.1 프로파일러로 프레임워크에서 생성되지 않은 SQL 쿼리 식별 144__7.3.2 프로파일러로 프레임워크에서 생성된 SQL 쿼리 식별 150__7.3.3 프로파일러로 프로그램에서 생성된 SQL 쿼리 식별 153요약 157CHAPTER 8 프로파일링한 데이터에 고급 시각화 도구 적용하기 1598.1 JDBC 접속 문제 감지 1608.2 호출 그래프를 보고 앱의 코드 설계 파악 1738.3 플레임 그래프를 그려 성능 문제 밝히기 1758.4 NoSQL DB에서의 쿼리 분석 179요약 180CHAPTER 9 멀티스레드 아키텍처의 락 문제 조사하기 1839.1 스레드 락 모니터링 1849.2 스레드 락 분석 1899.3 대기 중인 스레드 분석 198요약 205CHAPTER 10 스레드 덤프로 데드락 문제 조사하기 20710.1 스레드 덤프 수집하기 208__10.1.1 프로파일러로 스레드 덤프 수집 210__10.1.2 커맨드 라인에서 스레드 덤프 수집 21210.2 스레드 덤프를 읽는 방법 215__10.2.1 일반 텍스트 스레드 덤프 216__10.2.2 도구를 활용하여 스레드 덤프 읽기 222요약 225CHAPTER 11 앱 실행 중 메모리 관련 이슈 찾기 22711.1 샘플링과 프로파일링으로 메모리 이슈 진단 22811.2 힙 덤프를 수집하여 메모리 누수가 발생하는 곳 찾기 235__11.2.1 힙 덤프 수집 236__11.2.2 힙 덤프 읽는 방법 240__11.2.3 OQL 콘솔에서 힙 덤프 쿼리 245요약 251PART III 대규모 시스템의 트러블슈팅CHAPTER 12 대규모 시스템에 배포된 앱의 동작 조사하기 25512.1 서비스 간 통신 문제 조사 256__12.1.1 HTTP 서버 프로브로 HTTP 요청 관찰 257__12.1.2 HTTP 클라이언트 프로브로 앱이 보낸 HTTP 요청 관찰 259__12.1.3 소켓의 로 레벨 이벤트 조사 26112.2 통합 로그 모니터링의 중요성 26312.3 배포 도구를 조사에 활용하는 법 270__12.3.1 결함 주입으로 재현하기 곤란한 문제를 비슷하게 모방 272__12.3.2 미러링 기법을 테스트 및 에러 감지에 활용 273요약 274APPENDIX A 이 책에서 사용한 도구 275APPENDIX B 프로젝트 열기 277APPENDIX C 기타 참고 도서 279APPENDIX D 자바 스레드 이해 281D.1 스레드란 무엇인가? 282D.2 스레드의 수명 주기 284D.3 스레드 동기화 286__D.3.1 동기화 블록 286__D.3.2 wait(), notify(), notifyAll() 사용 289__D.3.3 스레드 조인 290__D.3.4 정해진 시간 동안 스레드 차단 291__D.3.5 스레드와 블로킹 객체 동기화하기 292D.4 멀티스레드 아키텍처의 일반적인 문제 293__D.4.1 경쟁 상태 293__D.4.2 데드락 294__D.4.3 리브락 295__D.4.4 기아 296D.5 추가 자료 297APPENDIX E 자바 메모리 관리 체계 299E.1 JVM이 앱의 메모리를 구성하는 방법 300E.2 스레드가 로컬 데이터를 저장하는 데 사용하는 스택 302E.3 앱이 객체 인스턴스를 저장하는 데 사용하는 힙 308E.4 데이터 유형을 저장하기 위한 메타스페이스 메모리 위치 311찾아보기 313