ひでっぷの技術メモ

はてなダイアリーから移行しました

oracle JDBCDriverのメモリリーク

oralceのJDBCドライバはどうやら腐っているらしい。

Conneciton,Statement,ResultSetは明示的にclose()しないとメモリリークします。

だって・・・。
JDBCドライバで実装しておけよな・・・。

ところで、今現在もメモリリーク(?)に悩まされております。
Connectionはアプリで1つしか使用しないからアプリ起動時にnewしてアプリ終了時にclose()する。これで問題ないはず。

1秒に1回oracleに問い合わせに行くんだけど、そのときに使用したPreparedStatement及びResultSetはメソッドの終わりで明示的にclose()している。

それなのにGCViewrで見るとメモリがどんどん上がっていってる・・・。
一応FullGCはかかってるけどね。でも、それ以上に上がっていってるからいつかはOutOfMemoryErrorになるんじゃなかろうか。

現在1秒に1回の問い合わせを100msに1回に変えて検証中・・・
あまり芳しくないな。


GCViewerGCの様子がグラフで一目でわかる!