Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

IT勉強会での初プレゼンなどお助けします!

勉強会でスピーカーをやりたいけど、プレゼンが初めて、苦手という方に無償でコーチできます。スライドのレビューや録画したリハへのアドバイスなどなど。Twitter@jyukutyoまでメンションでもDMでもお気軽にご連絡ください。

私はIT講師の経験があり、プレゼンはデブサミやJJUG CCCなど200人規模の経験が豊富で最大800人の前でプレゼンしました。海外ではDevoxxUSで。デブサミ2017では公募スピーカー1位、デブサミ関西2012アワードで5位となりました。

ソフト参照を使ってメモリの枯渇に対処する

Java魂―プログラミングを極める匠の技

Java魂―プログラミングを極める匠の技


でソフト参照については学んでたんだけど、いつ使うのかわからなかった。

ソフト参照とは、「ヒープ上のメモリが少ない場合のみに削除される」参照だ。

GCで弱い参照はすべて削除されるが、それでも枯渇しているときソフト参照のオブジェクトを削除する。

Java魂ではキャッシュマネージャなどのツールに便利とあったけど、それってあまり使い道がないな、と考えてた。

Release It! 本番用ソフトウェア製品の設計とデプロイのために

Release It! 本番用ソフトウェア製品の設計とデプロイのために


でなるほど、と思った。

Webアプリケーションで巨大なオブジェクトをセッションに保持しなければならないときに、ソフト参照でオブジェクトをラップしてセッションに保持する、と。

(セッションに巨大なオブジェクトを保持しない、というのが一番だけど)

これは実用的で納得のいく使い方。

予想を超えたアクセスなどで大量にセッションを作成してメモリを使用したとき、仮にそれぞれのユーザーに対して巨大なオブジェクトをセッションに保持すれば、あっという間にメモリが枯渇する。

もしソフト参照を利用していれば、OutOfMemoryを出さずに稼働させることができる、

少なくともセッションのメモリ利用でダウンすることはなくなる。

「Release It!」のよい点はケーススタディが実際に起こった障害を基にしているから実践的であることと、対処法がいくつもあってそれぞれ具体的であるというところがすごくいい。