{"product_id":"110255","title":"자바 잘 읽는 법","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jYEEOLkh6GjmDhHKMEF3LC7sReJKx.png?v=1765097993\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\u003ccenter\u003e\n\u003cdiv style=\"width:95%\"\u003e\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e자바 잘 읽는 법\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/126016473\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eDescription\u003c\/div\u003e\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e책소개\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cdiv\u003e  \u003cb\u003e자바 버그와 성능 문제를 찾는 프로파일링, 디버깅, 로깅 기법 \u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e실무에서 개발자는 기존 코드를 읽고 이해하는 데 가장 많은 시간을 쓴다.\u003cbr\u003e이 책은 익숙하지 않은 자바 코드를 파악하는 시간을 줄여주는 실용적인 기법들을 소개한다.\u003cbr\u003e프로파일링과 디버깅, 나아가 JVM 애플리케이션이 실제로 어떻게 작동하는지 이해함으로써 디펜던시나 충돌의 근본 원인을 찾고, 예상치 못한 결과를 해석할 수 있다.\u003cbr\u003e디버깅의 기초부터 마이크로서비스 아키텍처에서 문제를 찾기 위한 고급 방법까지, 딱딱하지 않은 그림과 흥미로운 실제 사례와 함께 자바 코드를 ‘잘 읽는 법’을 알려준다.\u003cbr\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cul\u003e \u003cli\u003e 책의 일부 내용을 미리 읽어보실 수 있습니다.\u003cbr\u003e\u003cspan\u003e미리보기\u003c\/span\u003e\n\u003c\/li\u003e \u003c\/ul\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e목차\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e  옮긴이 머리말 x\u003cbr\u003e베타리더 후기 xi\u003cbr\u003e시작하며 xiv\u003cbr\u003e감사의 글 xvi\u003cbr\u003e이 책에 대하여 xviii\u003cbr\u003e표지에 대하여 xxi\u003cbr\u003e\u003cbr\u003e\u003cb\u003ePART I 트러블슈팅 기본 테크닉\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 1 앱에서 모호한 부분 밝히기 3\u003c\/b\u003e\u003cbr\u003e1.1 앱을 더 쉽게 이해하는 방법 4\u003cbr\u003e1.2 일반적인 코드 조사 시나리오 8\u003cbr\u003e__1.2.1 예상과 다른 아웃풋의 원인을 밝힌다 9\u003cbr\u003e__1.2.2 특정 기술을 습득한다 14\u003cbr\u003e__1.2.3 속도 저하 이유를 알아낸다 15\u003cbr\u003e__1.2.4 앱 크래시가 발생하는 이유를 이해한다 16\u003cbr\u003e1.3 이 책에서 배울 내용 19\u003cbr\u003e요약 20\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 2 디버깅 기법으로 앱 로직 이해하기 21\u003c\/b\u003e\u003cbr\u003e2.1 코드 분석만으로는 불충분한 경우 23\u003cbr\u003e2.2 디버거를 이용한 코드 조사 26\u003cbr\u003e__2.2.1 실행 스택 트레이스란 무엇이고 어떻게 사용해야 할까? 31\u003cbr\u003e__2.2.2 디버거로 코드 탐색하기 36\u003cbr\u003e2.3 디버거로도 충분하지 않다면 43\u003cbr\u003e요약 45\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 3 고급 디버깅 기법으로 문제의 근본 원인 찾기 47\u003c\/b\u003e\u003cbr\u003e3.1 조건부 브레이크포인트로 조사 시간 최소화 48\u003cbr\u003e3.2 실행을 중단시키지 않고도 브레이크포인트를 사용하는 방법 52\u003cbr\u003e3.3 조사 시나리오를 동적으로 변경하기 55\u003cbr\u003e3.4 조사 케이스를 되감기 58\u003cbr\u003e요약 64\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 4 원격 앱 디버깅 65\u003c\/b\u003e\u003cbr\u003e4.1 원격 디버깅이란? 66\u003cbr\u003e4.2 원격 환경에서 조사하기 69\u003cbr\u003e__4.2.1 시나리오 70\u003cbr\u003e__4.2.2 원격 환경의 문제 조사하기 71\u003cbr\u003e요약 81\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 5 로그를 활용하여 앱 동작 감시하기 83\u003c\/b\u003e\u003cbr\u003e5.1 로그를 이용하여 조사하기 87\u003cbr\u003e__5.1.1 로그에 기록된 예외 식별 88\u003cbr\u003e__5.1.2 예외 스택 트레이스로 어디서 메서드를 호출했는지 식별 89\u003cbr\u003e__5.1.3 멀티스레드 아키텍처에서 커맨드의 실행 시간 측정 91\u003cbr\u003e__5.1.4 멀티스레드 아키텍처에서 커맨드 실행 문제 조사 92\u003cbr\u003e5.2 로깅을 구현하는 방법 94\u003cbr\u003e__5.2.1 로그 메시지 저장 94\u003cbr\u003e__5.2.2 로깅 레벨을 정의하고 로깅 프레임워크를 사용하는 방법 95\u003cbr\u003e__5.2.3 로깅 때문에 발생하는 문제와 예방 조치 102\u003cbr\u003e5.3 로그와 원격 디버깅 107\u003cbr\u003e요약 108\u003cbr\u003e\u003cbr\u003e\u003cb\u003ePART II 트러블슈팅 고급 테크닉\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 6 프로파일링 기법으로 리소스 사용 문제 파악하기 111\u003c\/b\u003e\u003cbr\u003e6.1 프로파일러는 어떤 경우에 유용할까? 112\u003cbr\u003e__6.1.1 비정상적인 리소스 사용량 식별 112\u003cbr\u003e__6.1.2 실행되는 코드 찾기 113\u003cbr\u003e__6.1.3 앱 실행 속도가 느려지는 원인을 파악 114\u003cbr\u003e6.2 프로파일러 사용 방법 114\u003cbr\u003e__6.2.1 VisualVM 설치 및 구성 115\u003cbr\u003e__6.2.2 CPU와 메모리 사용량 관찰 117\u003cbr\u003e__6.2.3 메모리 누수 현상 식별 127\u003cbr\u003e요약 132\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 7 프로파일링 기법으로 숨겨진 이슈 찾기 133\u003c\/b\u003e\u003cbr\u003e7.1 샘플링으로 실행되는 코드 관찰 134\u003cbr\u003e7.2 프로파일링으로 메서드의 실행 횟수 파악 142\u003cbr\u003e7.3 프로파일러로 앱이 실제로 실행하는 SQL 쿼리 파악 144\u003cbr\u003e__7.3.1 프로파일러로 프레임워크에서 생성되지 않은 SQL 쿼리 식별 144\u003cbr\u003e__7.3.2 프로파일러로 프레임워크에서 생성된 SQL 쿼리 식별 150\u003cbr\u003e__7.3.3 프로파일러로 프로그램에서 생성된 SQL 쿼리 식별 153\u003cbr\u003e요약 157\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 8 프로파일링한 데이터에 고급 시각화 도구 적용하기 159\u003c\/b\u003e\u003cbr\u003e8.1 JDBC 접속 문제 감지 160\u003cbr\u003e8.2 호출 그래프를 보고 앱의 코드 설계 파악 173\u003cbr\u003e8.3 플레임 그래프를 그려 성능 문제 밝히기 175\u003cbr\u003e8.4 NoSQL DB에서의 쿼리 분석 179\u003cbr\u003e요약 180\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 9 멀티스레드 아키텍처의 락 문제 조사하기 183\u003c\/b\u003e\u003cbr\u003e9.1 스레드 락 모니터링 184\u003cbr\u003e9.2 스레드 락 분석 189\u003cbr\u003e9.3 대기 중인 스레드 분석 198\u003cbr\u003e요약 205\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 10 스레드 덤프로 데드락 문제 조사하기 207\u003c\/b\u003e\u003cbr\u003e10.1 스레드 덤프 수집하기 208\u003cbr\u003e__10.1.1 프로파일러로 스레드 덤프 수집 210\u003cbr\u003e__10.1.2 커맨드 라인에서 스레드 덤프 수집 212\u003cbr\u003e10.2 스레드 덤프를 읽는 방법 215\u003cbr\u003e__10.2.1 일반 텍스트 스레드 덤프 216\u003cbr\u003e__10.2.2 도구를 활용하여 스레드 덤프 읽기 222\u003cbr\u003e요약 225\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 11 앱 실행 중 메모리 관련 이슈 찾기 227\u003c\/b\u003e\u003cbr\u003e11.1 샘플링과 프로파일링으로 메모리 이슈 진단 228\u003cbr\u003e11.2 힙 덤프를 수집하여 메모리 누수가 발생하는 곳 찾기 235\u003cbr\u003e__11.2.1 힙 덤프 수집 236\u003cbr\u003e__11.2.2 힙 덤프 읽는 방법 240\u003cbr\u003e__11.2.3 OQL 콘솔에서 힙 덤프 쿼리 245\u003cbr\u003e요약 251\u003cbr\u003e\u003cbr\u003e\u003cb\u003ePART III 대규모 시스템의 트러블슈팅\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eCHAPTER 12 대규모 시스템에 배포된 앱의 동작 조사하기 255\u003c\/b\u003e\u003cbr\u003e12.1 서비스 간 통신 문제 조사 256\u003cbr\u003e__12.1.1 HTTP 서버 프로브로 HTTP 요청 관찰 257\u003cbr\u003e__12.1.2 HTTP 클라이언트 프로브로 앱이 보낸 HTTP 요청 관찰 259\u003cbr\u003e__12.1.3 소켓의 로 레벨 이벤트 조사 261\u003cbr\u003e12.2 통합 로그 모니터링의 중요성 263\u003cbr\u003e12.3 배포 도구를 조사에 활용하는 법 270\u003cbr\u003e__12.3.1 결함 주입으로 재현하기 곤란한 문제를 비슷하게 모방 272\u003cbr\u003e__12.3.2 미러링 기법을 테스트 및 에러 감지에 활용 273\u003cbr\u003e요약 274\u003cbr\u003e\u003cbr\u003e\u003cb\u003eAPPENDIX A 이 책에서 사용한 도구 275\u003cbr\u003e\u003cbr\u003eAPPENDIX B 프로젝트 열기 277\u003cbr\u003e\u003cbr\u003eAPPENDIX C 기타 참고 도서 279\u003cbr\u003e\u003cbr\u003eAPPENDIX D 자바 스레드 이해 281\u003c\/b\u003e\u003cbr\u003eD.1 스레드란 무엇인가? 282\u003cbr\u003eD.2 스레드의 수명 주기 284\u003cbr\u003eD.3 스레드 동기화 286\u003cbr\u003e__D.3.1 동기화 블록 286\u003cbr\u003e__D.3.2 wait(), notify(), notifyAll() 사용 289\u003cbr\u003e__D.3.3 스레드 조인 290\u003cbr\u003e__D.3.4 정해진 시간 동안 스레드 차단 291\u003cbr\u003e__D.3.5 스레드와 블로킹 객체 동기화하기 292\u003cbr\u003eD.4 멀티스레드 아키텍처의 일반적인 문제 293\u003cbr\u003e__D.4.1 경쟁 상태 293\u003cbr\u003e__D.4.2 데드락 294\u003cbr\u003e__D.4.3 리브락 295\u003cbr\u003e__D.4.4 기아 296\u003cbr\u003eD.5 추가 자료 297\u003cbr\u003e\u003cbr\u003e\u003cb\u003eAPPENDIX E 자바 메모리 관리 체계 299\u003c\/b\u003e\u003cbr\u003eE.1 JVM이 앱의 메모리를 구성하는 방법 300\u003cbr\u003eE.2 스레드가 로컬 데이터를 저장하는 데 사용하는 스택 302\u003cbr\u003eE.3 앱이 객체 인스턴스를 저장하는 데 사용하는 힙 308\u003cbr\u003eE.4 데이터 유형을 저장하기 위한 메타스페이스 메모리 위치 311\u003cbr\u003e\u003cbr\u003e찾아보기 313 \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e상세 이미지\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate4470\/MidCate006\/446952888.jpg\" border=\"0\" alt=\"상세 이미지 1\"\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e책 속으로\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cdiv\u003e  디버거는 개발자가 원하는 커맨드에서 실행을 잠깐씩 멈춰가며 단계별로 코드를 실행함으로써 소스 코드를 더 쉽게 읽고 이해할 수 있게 도와주는 소프트웨어 프로그램이다.\u003cbr\u003e디버거가 소프트웨어 동작을 조사하는 일반적인 수단(또 개발자가 제일 처음에 배우는 방법)이긴 하지만, 디버깅 기법이 이것만 있는 것은 아니고 또 모든 시나리오에서 이렇게 하는 게 유용한 것도 아니다(디버거의 기본적인 사용법과 고급 기법은 2, 3장에서 설명한다).\u003cbr\u003e이 책 전체를 통틀어 배우게 될 다양한 조사 기법은 그림 1.3과 같다.\u003cbr\u003e\u003cbr\u003e--- P.6\u003cbr\u003e\u003cbr\u003e모든 조사 기법이 늘 그렇듯이 로그 역시 사용하기 적합한 경우가 있고 그렇지 않은 경우도 있다.\u003cbr\u003e이 절에서는 로그를 사용하면 앱 동작을 더 쉽게 이해할 수 있는 몇 가지 시나리오를 살펴보겠다.\u003cbr\u003e먼저 로그 메시지에 관한 몇 가지 키 포인트를 이야기한 다음, 개발자가 앱의 문제점을 조사할 때 이러한 특성이 어떻게 도움이 되는지 알아본다.\u003cbr\u003e\u003cbr\u003e--- P.87\u003cbr\u003e\u003cbr\u003e프로파일러로 할 수 있는 가장 간단한 작업은 앱이 시스템 리소스를 사용하는 모습을 관찰하는 것이다.\u003cbr\u003e이렇게만 보아도 앱에서 메모리 누수가 발생하거나 좀비 스레드가 생기는 등의 문제점을 발견할 수 있다.\u003cbr\u003e\/ 실행 중인 앱을 프로파일러로 들여다보면 비정상적인 앱 동작을 쉽게 발견할 수 있다.\u003cbr\u003e가령, 앱 실행이 끝난 뒤에도 계속 실행 상태로 남아 앱의 리소스를 차지한 좀비 스레드는 VisualVM에서 바로 드러난다.\u003cbr\u003e이제 비정상적으로 리소스를 소모하는 앱의 이상 징후를 VisualVM으로 어떻게 찾아내고 관찰하는지 살펴보자.\u003cbr\u003e\u003cbr\u003e--- P.117\u003cbr\u003e\u003cbr\u003eJDBC 드라이버를 프로파일링하여 앱이 DB에 전송한 쿼리를 가로챈다.\u003cbr\u003e확인 결과(그림 7.14), 제품 테이블과 자기 스스로 셀프 조인(self join)을 하고 있다.\u003cbr\u003e심각한 문제다! 이 예제는 테이블에 레코드가 달랑 10개뿐이라 별로 대수롭지 않아 보일 수도 있지만, 실제 앱이라면 테이블에 엄청나게 많은 레코드가 존재할 텐데, 이렇게 크로스 조인을 하면 엄청난 레이턴시는 피할 수 없고 결국 잘못된 아웃풋(중복된 행)이 표시될 것이다.\u003cbr\u003eVisualVM으로 쿼리를 가로채서 들여다보면 어디가 문제인지 바로 알 수 있다.\u003cbr\u003e\u003cbr\u003e--- P.154\u003cbr\u003e\u003cbr\u003eVisualVM에서 Sampler 탭을 선택한 다음 Memory 버튼을 클릭하면 메모리 사용량 샘플링 세션이 시작된다.\u003cbr\u003e엔드포인트를 호출하고 실행이 완료될 때까지 기다리면 잠시 후 VisualVM 화면에 앱이 할당한 객체가 표시될 것이다.\u003cbr\u003e(…) 수많은 인스턴스가 메모리를 꽉 채우는 일은 알겠는데, 후자처럼 소수의 덩치 큰 인스턴스가 메모리 대부분을 차지할 가능성도 있을까? 대용량 동영상 파일을 처리하는 앱을 떠올리면 된다.\u003cbr\u003e한 번에 2~3개의 파일을 로드하지만 동영상 파일은 용량이 워낙 커서 메모리를 가득 채울 수 있다.\u003cbr\u003e이런 경우에는 앱이 전체 파일을 한꺼번에 메모리에 로드하지 않고 한 번에 일부만 로드하는 방식으로 최적화할 여지는 없는지 살펴볼 필요가 있다.\u003cbr\u003e\u003cbr\u003e--- P.231\u003cbr\u003e\u003cbr\u003e이 앱은 스프링 부트 기반으로 개발되었기 때문에 application.properties 파일에 다음 코드 스니펫과 같이 DSN 값을 sentry.dsn 애트리뷰트에 지정한다.\u003cbr\u003e센트리에서 이 작업은 선택 사항이지만, 가능하면 앱이 실행되는 환경을 지정하는 것이 좋다.\u003cbr\u003e그래야 나중에 이벤트를 필터링해서 관심 있는 이벤트만 추출할 수 있기 때문이다.\u003cbr\u003e\n\u003c\/div\u003e \u003cdiv\u003e--- P.267\u003c\/div\u003e \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e출판사 리뷰\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e  \u003cb\u003e코드 독해력을 높여 JVM 코드를 이해하고 디버깅하고 최적화하는 요령 \u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e커리어가 쌓일수록 코드를 작성하는 시간보다 코드를 읽는 시간이 훨씬 더 길어진다.\u003cbr\u003e그 긴 시간을 효율적으로 쓰기 위한 코드 조사 기법을 다루는 게 바로 이 책이다.\u003cbr\u003e디버깅이나 로깅의 기초부터 고급 프로파일링 기법과 JVM 애플리케이션의 작동 원리까지, 개발자 친화적인 시나리오 중심으로 트러블슈팅을 설명한다는 점이 큰 장점이다.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e1부는 코드베이스를 파악하기 위한 조사 기법의 기초를 다룬다.\u003cbr\u003e2~4장에서는 디버깅을 중심으로 간단히 브레이크포인트를 찍는 것부터 원격 디버깅까지 설명하고, 5장은 로그를 이용해 코드 구현과 관련된 필수 세부 정보를 조사하는 방법을 살펴본다.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e2부는 프레임워크가 큰 비중을 차지하는 오늘날 개발에서 프로파일링이 얼마나 유용할 수 있는지 잘 보여준다.\u003cbr\u003e, VisualVM과 JProfiler 같은 프로파일러 도구를 이용한 6장에서는 CPU와 메모리 사용량을 분석하는 방법을 다루고, 7장에서는 레이턴시 문제를 조사하는 방법을 다룬다.\u003cbr\u003e8, 9장에서는 멀티스레드 아키텍처를 자세히 파헤치고, 10장에서는 스레드 덤프를, 11장에서는 힙 덤프를 생성하여 메모리 문제를 진단하는 방법을 살펴본다.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e3부 12장은 단일 앱이 아닌 여러 앱으로 이루어진 대규모 엔터프라이즈 시스템에서 문제를 조사하는 방법을 설명한다.\u003cbr\u003e각 앱이 서로 ‘소통’하는 방식, 앱이 배포된 환경이 미치는 영향, 구현 시 고려 사항 등을 살펴본다.\u003cbr\u003e끝으로 부록에서는 자바 개발자들에게 실질적인 도움이 되는 자바 스레드와 메모리 관리 체계를 정말로 자세히 설명한다.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003eJVM 애플리케이션이 실제로 어떻게 작동하는지 이해하면 문제의 근본 원인을 찾을 수 있다.\u003cbr\u003e디버깅과 로깅을 올바르게 익힐 수 있는 것은 물론, 마이크로서비스 아키텍처에서 문제를 찾기 위한 고급 기법까지 포괄적으로 다루는, 흔치 않은 책이다.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003e주요 내용\u003c\/b\u003e\u003cbr\u003eㆍ처음 본 코드가 어떤 기능을 하는지 파악하기\u003cbr\u003eㆍ코드 로직 문제 노출하기\u003cbr\u003eㆍ힙 덤프를 평가하여 메모리 누수 찾기\u003cbr\u003eㆍCPU 사용량을 모니터링하여 실행 최적화하기\u003cbr\u003eㆍ스레드 덤프를 사용하여 교착 상태 찾고 해결하기\u003cbr\u003eㆍ서비스 지향\/마이크로서비스 시스템 이해하기\u003cbr\u003eㆍ로깅을 제대로 사용하여 자바 앱 실행을 깊이 이해하기\u003cbr\u003eㆍ자바 디버거를 효율적으로 사용하기 \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e\n\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eGOODS SPECIFICS\u003c\/div\u003e\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003e발행일 : \u003c\/strong\u003e2024년 05월 09일\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003e쪽수, 무게, 크기 : \u003c\/strong\u003e340쪽 | 188*245*17mm\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003eISBN13 : \u003c\/strong\u003e9791193926208\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003eISBN10 : \u003c\/strong\u003e1193926203\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ccenter\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cspan\u003e\u003c\/span\u003e\n\u003c\/center\u003e\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893707538474,"sku":"110255","price":38.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/55936b10b585139fffafca5b51ee715e.jpg?v=1765412995","url":"https:\/\/librairie.coreenne.fr\/ko\/products\/110255","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}