カーキ色はヒンディー語らしい

技術記事は https://zenn.dev/notrogue

Javaパフォーマンス読んだ

 

www.oreilly.co.jp日本語版は2015年と古いですが、英語版は2020年に二版が出ています。

日本語版はJava7が中心で、時々Java8の話題が出てきます。

 

主な内容

  1. パフォーマンステストの話
  2. ツール(CPU・メモリ、JDK Mission Control、ダンプ)
  3. JIT
  4. ガーベジコレクション
  5. 各種プラクティス(ヒープ、ネイティブメモリ、スレッド、JavaEEJPAJDBCJava SE)

メモ

パフォーマンスチューニングはアートとサイエンス

測る時は、なるだけ本番と同じ条件・マクロで測れ

  • JITコンパイルが違ったりする
  • ミクロな部分が遅かったとしても、全体に占めるインパクトがわからん
  • 実際とズレた入力で測ると意味ない

GCは止まる時間・メモリ容量・CPU使用量などで選ぶ

  • コンカレント型は止まる時間短いが、CPU使用量が高い
  • どのGCでも止まる時間はある(young・フルGC

 

オブジェクトの再利用はやるケースを選ぶ

  • オブジェクトが長生きする。old領域のGCはyoungよりも時間がかかる

  • 管理が難しい
  • 使うのはオブジェクト作成に時間がかかる時

同期はしなくてよいならしない

  • ThreadLocalとか