Java Performance Fundamental

目次

Java Performance Fundamental

JavaPerfFund

Java Performance Fundamentalは、JVMの体系的な知識を提供し、Javaを使用する方のパフォーマンスに関するベース知識を深めるよう支援します。

この本には、今まで取り上げられていないJVMのメカニズムについての話を多数掲載誌しています。Java開発者、オペレータ、性能管理で頭を痛めてきたメモリの問題、Garbage Collectionのテーマはもちろん、JIT Compilerなどの用語で恥部たものの詳細な説明があります。

そしてJDBCの説明と一緒にOracleをDatasourceに利用してSQLを実行するときにWASと同じJava ApplicationとOracleでは何が起きるかどうかのテストを介して詳細に明らかにしました。また、これを基にOracle JDBCのパフォーマンスを向上させる方案も模索しています。

この本は、Java Performanceのために良い案内者になるでしょう。

著者紹介

Artdb

著者[ギムハンド]は、自分がしていることをOracleやJavaと呼ばれる特定の領域に限定にするよりも、性能(Performance)という言葉で表現することを楽しむ人です。彼はPerformance Koreaという夢を実現するために、今日も新たな領域を探索することを楽しんでいます。 OracleのパフォーマンスというIT業界に足を踏み入れた彼は、[OWIを活用した、Oracleの診断及びチューニング]の翻訳に参加し、次いで長年のパフォーマンス分析の経験を体系化した[Oracleパフォーマンス分析の方法論]という本を出版しました。その後興味をJavaに移しサービスベースの性能を探索しています。エクセムは、これらの著者の夢を実現を強く支えています。エクセムと著者は、夢を共有し成長しているのです。

ブログPerformance Meister for Enterprise Performanceを通じて著者がオンラインで会うことができます。

著者に連絡するartdb@ex-em.comにEmailを送信してください。

ツイッターでも会ってみることができます。著者のTwitter IDは@novathinkerです。

なぜJVM?

Javaのパフォーマンスの土台はなぜJVMだったのでしょうか?

それはすべてのJavaプログラムは、JVM(Java Virtual Machine)上で動作するからです。あなたがWASを使用する場合や、Appletを使用してJava言語で作成されたプログラムを実行する場合には、必ず、JVMが起動されます。

そのため、Javaは、最終的にJVMに依存することになります。結局Javaのパフォーマンスは、JVMレベルで開始するため、JVMのためのメカニズムを理解することが重要です。

JVMは、皆同じでしょうか?

そうではありません。 OSを作るいくつかの会社があるようJVMも多くの企業で作っています。私たちが最も多く使用しているのはSun社のJVMであり、IBMの作成JVMもあります。また、OracleもHPでも作っています。 WASベンダーであるBEAもJRockitというJVMを作成しておりOpen陣営でもOpen JDK、HarmonyなどのJVMがあります。これについての詳細は、Wikipedia.orgの下部のリストを参照してください。

二重化商用マシンで最も多く使用されるJVMは、Sun社のHotspot JVMとIBMのJVMです。 Hotspotは、元のJIT Compilerを改良したHotspot Compilerを使用して付けられたニックネームです。 Hotspot JVMは、Sun、Oracle、HPなどのベンダーも使用しているので、本でもHotspot JVMと命名しました。 そしてIBM JVMは、IBMマシンにデフォルトでインストールされています。 IBMが、Java 5にJ9とするJVMを吸収したため、J9と呼ぶこともあります。本書では、IBM JVMと命名しています。

各JVMベンダーはSun Solaris、Windows、Linux、マシンの場合は、Sun社のJVMを搭載することにし、HPのマシンはHPのJVMを、そしてIBMの場合、AIX、OS / 2、z / OSで、そのJVMを搭載することにして領域を区分しています。

DBを理解しているのに、あえてOracle JDBC性能に言及する必要があるでしょうか?

はい.あります。 DBはSQLの結果に対してだけ処理するためです。 ApplicationでSQLのチューニングを行わない場合、DBの性能が悪くなることがあります。 しかしチューニングされたSQLを実行した結果を渡すJDBCの役割により、さらに性能が改善される余地があります。

JDBCはただJava ApplicationとDatabaseを接続する役割だけではなく、データが通過する道となります。狭い道にボトルネックが生じるのは当然でしょう。JDBCも同様で、この本で私たちが見落としている性能の死角地帯である、JDBCを扱っているのです。

内容紹介

第1章Javaとは何か

第1章では、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のアルゴリズムを詳細に調べてみます。その後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
  ・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
・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

DB SchemaとSource Codeは、以下のとおりです。

・Java Source Code
・DB SchemaとData