Javaパフォーマンス(オライリー)を読んでみた

JVMの管理についてガベージコレクションやヒープメモリの調査方法などプログラミングをするだけではあまり意識しなかったことについて知れたのはよかったと思います。

2章パフォーマンステストのアプローチ

Javaアプリケーションの正確なパフォーマンス測定方法としてのマイクロベンチマークについて載っています。テストコードを書くときに気にしなければいけないこと(評価結果を利用しなければ処理されないかもとか)それから、JavaJITコンパイラを使っており事前にコンパイルで生成した中間コードをプログラムの実行時に機械語に変換するという様になっており正確な処理時間を測定するにはウォームアップが必要になるとかを知ることができました。それから性能が改善されたがどうかの調査としてt検定を使う方法について説明がありました。

4章JITコンパイルの仕組み

JITコンパイルの仕組みについて、Javaバイトコードを吐き出すことで様々な環境で動かせる様になり、実行時はまとめて機械語に変換するのではなく評価が必要になったタイミングでコンパイル(Javaバイトコード機械語)するといった基本的なことについての説明があります。それからチューニングの観点で階層的コンパイルというものを知れたので試してみたいかと思いました。

5章ガベージコレクションの基礎

Javaのパフォーマンスに大きく影響を与えるガベージコレクションの基本的な内容、young領域やold領域(残り続ける)の扱いやガベージコレクタのアルゴリズムとしてCMSガベージコレクターとG1ガベージコレクターに触れています。基本的には標準的なガベージコレクタのアルゴリズムを使うと思うのですが、コードをいじらないでパフォーマンス改善が必要になった場合はjstatコマンドなどを活用しfull gcの発生を確認しつつjvmのオプションいじっての動作確認が必要な場合もあるかも知れないと思いました。