Hibernate session.createSQLQueryを使うとメモリリークする。

hibernate

バッチ処理を数週間動かすとJavaのメモリ使用量が爆発的に増える現象が発生しました。

ヒープダンプを解析した結果、Hibernateのsessionが無駄に溜まっている様子。



調べてみたら、session.createSQLQueryを使うとメモリリークします。とのこと。



この問題はHibernate3.1.3で認知され、Hibernate3.5.1で解決しています。

原因は、equalsメソッドとhashCodeの実装ミス。



effective javaでも問題にあがってましたが、equalsメソッドのオーバーライドは難しい。



■参考:http://opensource.atlassian.com/projects/hibernate/browse/HHH-2470

このエントリーをはてなブックマークに追加
はてなブックマーク - Hibernate session.createSQLQueryを使うとメモリリークする。
Share on Facebook
Post to Google Buzz
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

Leave a Reply

  

  

  

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax