VisualVM
今日の晩飯(メインは鮭の味噌バター炒め)と中学、高校の時に割とよく聞いてた音楽(BOØWY、サザン、RCサクセション)についてブログに書いていたら、Safariが突然落ちて書いていた内容が消えてしまった。orz
そのネタは今度気が向いたら(思い出したら)書くことにして、VisualVM関連をメモっとく。
- [Seasar-user:15022] [S2JDBC] SQL自動生成のメモリ消費
- [CONTAINER-199] S2JDBC で,Statement#getGeneratedKeys() をサポートした RDBMS で @GeneratedValue が指定されたエンティティを JdbcManager#insert(T) に渡した場合,PreparedStatement がクローズされない問題を修正しました.[Seasar-user:15022] - The Seasar Foundation Issues (Deprecated)
VisualVMね。今度(いつ?)使ってみよっかな。
ていうか、VisualVMのあの画面でResultSetのclose漏れがわかるほうがすごい。
僕にはbyte[]がいっぱいあるようにしか見えん。いや、com.mysql.jdbc.JDBC4ResultSetがヒープに残っているのがまずいのかな。。。
とにもかくにもこの手の問題はやはり原因究明が難しそうだ。
実は僕が仕事で関わっている静的解析ツールでもクローズ漏れを指摘するルールを要望されたことがある。
今回のケースのようにメソッドのなかで宣言してクローズしてないなら指摘するルールを1月くらい前に書いて、今ほったらかしてるな(笑)。
いやSeasar関連案件のエンハンスがはじまったからなんだけどね。
なにぶん静的解析なのでオブジェクトの情報をひたすらトレースするのは難しい。なのでメソッドのなかで閉じている場合のみとりあえず対象にした気がする。
エンハンスが終わったらとりくもう。