java におけるメモリーリーク

メモリーリーク。記憶漏れで、あああああ、である。

厳しいスケジュールを乗り越え、ようやく本番稼動まで漕ぎつけたシステムが、今度は java.lang.OutOfMemoryError に見舞われた。試験環境では発生せず、本番になって起こるところが、何ともいじらしい。

原因のひとつは、使用ユーザー数が想定を超えたこと。もうひとつは、セッションに保持する情報が多いこと。…という線で話は収束しているけれども、想定の倍程度のユーザー数がちょっと触っただけでコケるというのは、大げさだろう。負荷テスト足りなかったけどさ。どっかに致命的なメモリーリークがある気がする。

いまだに Java には GC があるからメモリーリークが無いと思っている人がいるけど、そんなことはない。不要になったデータに参照が残っていれば、メモリが開放されず、メモリリークになりうる。たとえばWebアプリケーションでは、Servlet で 非static なクラス変数を使用すると、そのインスタンスは Servletコンテナが参照し続けるため、メモリリークになる可能性がある。

そんなわけで、チマチマと開発メンバの書いたソースを読んでいたら、眠くなってきた。こんなところで春を感じる。ソース量も膨大だし、何かツール使った方が良さそうだなあ。

前回からしばらく時間が空いたのに、メモリーリークの話題でつながっているのは、偶然です。おかげで俺がメモリ大好きっ子みたいになってしまったじゃないか。そんなことないでつよ。ハイ。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/314
AV Idol at 2016年11月22日 19:45

Anyone effectively create really articles I might declare. Here is the very first time I actually visited your online site and up to at this moment? My spouse and i stunned together with the investigation you have made to build this particular post outstanding AV Idol. Excellent practice!