Javaパフォーマンス の商品レビュー
jvmやコンパイル、並列処理、Streamなどについて、仕組みの詳細に踏み込んで解説してくれるので、パフォーマンス観点以外でも勉強になりました。
Posted by
ある程度の規模でJavaを使っている人用の本。私の場合は仕事で検索システムという非常にパフォーマンスが求められるソフトウェアを開発・運用しているので読んでみたが、実際必読の内容だらけでもっと早く読んでおけば良かったとなった。冒頭に「日曜日の夜に読んで翌日から手早くパフォーマンス改...
ある程度の規模でJavaを使っている人用の本。私の場合は仕事で検索システムという非常にパフォーマンスが求められるソフトウェアを開発・運用しているので読んでみたが、実際必読の内容だらけでもっと早く読んでおけば良かったとなった。冒頭に「日曜日の夜に読んで翌日から手早くパフォーマンス改善ができるようなことはない」と書いてあったが、かなり実用的な内容も多く案外そうでもないかもとも思った。一方、JVMやOSの細かい処理にも触れており、false sharingみたいなユーザ側ではあまりどうしようもないような問題も解説していて実用的で実践的な内容とコアでニッチな内容が混濁している構成となっている(悪い意味ではなく) 実践的な内容としてはJavaパフォーマンスを計測するツールボックス(JFR, Mission Control, VisualVM, jcmd, jinfo, jstackなど)の機能と使い方、様々なJVMオプション、ヒープ分析・ヒープダンプの見方、Java SEのパフォーマンスTipsを中心にざっくりと解説している。体系的な内容としては、ベンチマークの種類・取り方と注意点、JITやGCの仕組みとチューニング方法などを詳細に説明している。コアな内容としてはthread-local allocation buffer, false sharing, エスケープ分析、CAS命令など。Java EEやJDBCのチューニングはやれることが限定的で現在必要としていないためざっくり流し読んだ。Java 7までの内容がメインでJava 8にもそこそこ触れている感じだが、基本的なJVMのチューニングはこれを読んでおけば困らなそう。 しかし全体を通して一貫していることは「JVM自体のチューニングを通してのパフォーマンス改善はごく一部分である」ということで大体のボトルネックはコード自体にあると述べている。アルゴリズムのオーダは当然、他にもThreadLocal変数やオブジェクトプールによるメモリリーク、不用意な同期には注意と述べている。 総じて期待以上の良書だった。ここ1年半仕事でJavaを使い、Effective Javaも読み、Javaにはかなり詳しくなったと思っていたが、この本を読むとまだまだだと実感させられた。しかし、CPUサイクルとメモリの消費を極限まで最適化してhigh-performanceなプログラムを書く場合、Javaみたいにメモリリソースが隠蔽されている言語では限界があるなあとは感じてしまった(その制約により安全性が保証されているし、その中で素晴らしいパフォーマンスを上げている言語だとは思うが)
Posted by
読み終わったー\(^o^)/ 社内の読書会で読んだ本。コーディングでの留意点やJVMのマニアックなパラメータが満載でした。
Posted by
- 1