코드 독해력을 높여 JVM 코드를 이해하고 디버깅하고 최적화하는 요령
커리어가 쌓일수록 코드를 작성하는 시간보다 코드를 읽는 시간이 훨씬 더 길어진다. 그 긴 시간을 효율적으로 쓰기 위한 코드 조사 기법을 다루는 게 바로 이 책이다. 디버깅이나 로깅의 기초부터 고급 프로파일링 기법과 JVM 애플리케이션의 작동 원리까지, 개발자 친화적인 시나리오 중심으로 트러블슈팅을 설명한다는 점이 큰 장점이다.
1부는 코드베이스를 파악하기 위한 조사 기법의 기초를 다룬다. 2~4장에서는 디버깅을 중심으로 간단히 브레이크포인트를 찍는 것부터 원격 디버깅까지 설명하고, 5장은 로그를 이용해 코드 구현과 관련된 필수 세부 정보를 조사하는 방법을 살펴본다.
2부는 프레임워크가 큰 비중을 차지하는 오늘날 개발에서 프로파일링이 얼마나 유용할 수 있는지 잘 보여준다. , VisualVM과 JProfiler 같은 프로파일러 도구를 이용한 6장에서는 CPU와 메모리 사용량을 분석하는 방법을 다루고, 7장에서는 레이턴시 문제를 조사하는 방법을 다룬다. 8, 9장에서는 멀티스레드 아키텍처를 자세히 파헤치고, 10장에서는 스레드 덤프를, 11장에서는 힙 덤프를 생성하여 메모리 문제를 진단하는 방법을 살펴본다.
3부 12장은 단일 앱이 아닌 여러 앱으로 이루어진 대규모 엔터프라이즈 시스템에서 문제를 조사하는 방법을 설명한다. 각 앱이 서로 ‘소통’하는 방식, 앱이 배포된 환경이 미치는 영향, 구현 시 고려 사항 등을 살펴본다. 끝으로 부록에서는 자바 개발자들에게 실질적인 도움이 되는 자바 스레드와 메모리 관리 체계를 정말로 자세히 설명한다.
JVM 애플리케이션이 실제로 어떻게 작동하는지 이해하면 문제의 근본 원인을 찾을 수 있다. 디버깅과 로깅을 올바르게 익힐 수 있는 것은 물론, 마이크로서비스 아키텍처에서 문제를 찾기 위한 고급 기법까지 포괄적으로 다루는, 흔치 않은 책이다.
주요 내용
● 처음 본 코드가 어떤 기능을 하는지 파악하기
● 코드 로직 문제 노출하기
● 힙 덤프를 평가하여 메모리 누수 찾기
● CPU 사용량을 모니터링하여 실행 최적화하기
● 스레드 덤프를 사용하여 교착 상태 찾고 해결하기
● 서비스 지향/마이크로서비스 시스템 이해하기
● 로깅을 제대로 사용하여 자바 앱 실행을 깊이 이해하기
● 자바 디버거를 효율적으로 사용하기