谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

Day-3 : Performance and Debugging Advancements in OpenJDK

話題の中心は、JITのcode cache。
その辺りにあまり詳しくない私には厳しめでした。


code cacheはJITコンパイルされたメソッドを格納するもの。


クライアントモードなら32MB、サーバモードなら48MBが上限で、GC対象にはならない。
上限まで達したら、それ以上はメソッドを格納しない。


そのままずっとJITコンパイルしないわけにもいかないから、
JavaEEサーバに再デプロイするタイミングで、
code cacheの古い方の半分をアンロードして、メソッドを格納できるようにする。


とは言え再デプロイのタイミングのみだと、やはり都合が良くないから、
実行時にも並行してcode cacheのクリアを行いたい。


ただ10ms以上掛かる処理なのでsafe point(って何ですか?)で
毎回code cacheをクリアするのは影響が大きい。


だからmainスレッドと並行でcode cacheの監視スレッドを用意して、
必要なタイミングでsafe pointでのクリアを行う、というアイデアを考えている。
(要するにいまのHotspotVMのGCと同じ感じ?)


という感じで、自分の理解が合っているかどうかも怪しいぐらい
ちんぷんかんぷんでした (@@;;