- - PR -
Oracle JDBCドライバのメモリリークについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-01-26 12:36
interface や抽象 class 上で、ResultSet を close しなくても良い規約なのに、ある特定の具象クラスを使うときは close しなければいけない、ということだとしたら、これはどう考えても変なことだと思うのですが、これはバグではないのでしょうか? もし、バグだとしても規約(JDBC の仕様)のバグなのか、Oracle の JDBC ドライバーの実装のバグなのか、のどっちなのか、という問題はさらにあるとは思います。 それとも JDBC はそこまでは細かく決めてないよ、だから Oracle の実装もバグではない、というような話なのでしょうか。 規約でテストケースを定めてあるとありがたいと思います。たとえば、このコードで JDBC ドライバーを呼び出しても、メモリーリークを起こしてはいけない(あるいは起こすことは許容する)、のようになどです。 | ||||||||
|
投稿日時: 2008-01-26 12:50
一般に、ソフトウェアで「しなくても良いはずなんだけどしたほうが良い」の類のことに遭遇したら、いわゆる危険な匂いがする、と言えると思います。
| ||||||||
|
投稿日時: 2008-01-28 22:47
検証してみました。 バージョンによる違いはあるかもしれませんが、私の環境ではStatementをcloseするとResultSetもcloseされました。 ただ、ご意見があった通り、ResultSetも明示的にcloseするのが一番安全ではあるのでしょうね。 皆様、ありがとうございました。 |