이 책은 크게 두 부분으로 나누어 진다. 한 부분은 JVM Internal이다. 1장 부터 6장에 해당한다. 그리고 7장에서는 JDBC와 Datasource로서 Oracle를 사용할 때의 성능 문제에 대해 다루고 있다.
1장. Java란 무엇인가
Java란 무엇이며 JVM은 Java에서 어떠한 의미를 가지고 있는 지에 대해 설명하고 있다.
Java Architecture
The Java Programming Language
The Java Class File Format
The Java Application Interface
The Java Virtual Machine (JVM)
2장. Runtime Data Areas
2장은 JVM의 메모리 구조인 Runtime Data Areas에 대한 설명을 하고 있다. 크게는4개의 모듈로 나누어 지는 Runtime Data Areas를 부분 별로 자세히 다루고 있다. 그리고 나서 우리가 프로그램을 수행할 때 Runtime Data Areas에서는 어떻게 데이터들이 움직이는 지를 간단한 예제를 통해 알아본다.
Runtime Data Areas의 구조
PC Register
Java Virtual Machine Stacks
Native Method Stack
Method Area
Java Heap
Runtime Data Areas Simulation
3장. Garbage Collection
3장은 Garbage Collection에 대해 설명한다. 먼저 JVM에서 사용하는 Garbage Collection 뿐만 아니라 일반적인 Garbage Collection의 Algorithm을 상세히 알아본다. 그 후 Hotspot JVM의 Heap구조와 Garbage Collector를 설명하고 Generation별로 어떻게 동작하는 지에 대해 설명한다. 이어 IBM JVM에 대한 Heap 구조와 Garbage Collector에 대해서도 설명한다.
Garbage Collection 이란?
Garbage Collection 의 대상
Garbage Collection 의 기본 Algorithm
Hotspot JVM의 Garbage Collection
Serial Collector
Incremental Collector
Parallel Collector
CMS Collector
Parallel Compaction Collector
o Garbage First Collector
IBM JVM의 Garbage Collection
Optimize for Throughput Collector
Optimize for Pause Time Collector
Generational Concurrent Collector
Subpool Collector
4장. Class Loader
4장은 Class Loader를 다루고 있다. Class Loader란 무엇이고 Class가 어떻게 JVM안으로 들어와 메모리의 일부로 동작하는지에 대해 상세하게 설명하고 있다. 그리고 Java 5에서 새로 소개된 Class Sharing에 대해서도 다루고 있다.
Class Loader
Namespace
o Class Loader Delegation Model
Class Sharing
Class Loader Work
Loading
Linking
Initialization
5장. Execution Engine
5장은 Execution Engine에 대한 내용이다. Class파일에 저장되어 있는 Bytecode를 해석하는 방법을 JIT Compiler와 Hotspot Compiler의 동작과정을 통해 자세히 알아본다.
Execution Engine
IBM JIT Compiler
Hotspot Compiler
6장. Thread Synchronization
6장은 Thread Synchronization이다. 여기서는 Java에서 Thread라는 것은 어떻게 관리되어 왔으며 동기화는 어떤 역할을 하는지를 설명한다. 더 나아가 JVM의 버전이 올라가면서 추가된 Hotspot JVM의 Biased Lock이나 IBM JVM의 Lock Reservation에 대해서도 설명하고 있다.
Java의 Thread
Java Synchronization
Hotspot JVM Synchronization
IBM JVM Synchronization
7장. Oracle As DataSource
7장은 처음에는 JDBC에 대한 얘기로 시작한다. 그리고 Oracle JDBC Driver에 대한 설명을 진행하고 여러 Oracle JDBC Driver 중 성능의 차이를 테스트를 통해 알아보게 된다. 그리고 Oracle에서 SQL이 수행될 때 Oracle 내부에서는 어떠한 일이 벌어지는지를 살펴보고, Java에서 SQL을 수행할 때와 어떤 차이가 있는지를 테스트를 통해 비교해 본다. 그리고 나서 JDBC에서 제공하는 여러 튜닝 기능이 어떻게 성능에 영향을 주게 되는지를 테스트한다. 이를 통해 이 기능들이 어느 부분에 얼마만큼의 성능 개선을 하게 되는 지를 실감할 수 있게 된다.
JDBC Overview
Oracle JDBC Driver
Java SQL Execution
Java SQL Performance
Index
참고문헌