• 締切済み

メモリー開放できていないのでしょうか?

Javaから大量データをDBへ取込んでいるのですが、 2100件目からメモリ確保量が極端に増えたり、 (OutOfMemoryなどの例外は発生していません) データ取り込みにかかる時間が5倍ぐらい遅くなってしまいます。原因は何が考えられますでしょうか? time: 1057146791527 Total Memory: 3670016 Use Memory: 3235960^M time: 1057146791692 Total Memory: 3670016 Use Memory: 3221888^M time: 1057146791857 Total Memory: 3670016 Use Memory: 3206952^M time: 1057146792104 Total Memory: 10420224 Use Memory: 2747280^M time: 1057146792266 Total Memory: 10420224 Use Memory: 2990384^M time: 1057146792431 Total Memory: 10420224 Use Memory: 3230000^M time: 1057146792600 Total Memory: 10420224 Use Memory: 3469616^M time: 1057146792764 Total Memory: 10420224 Use Memory: 3709232^M time: 1057146792926 Total Memory: 10420224 Use Memory: 3968296^M

みんなの回答

回答No.2

>Commitタイミングは短くしましたが変わらずです。DBの共有メモリ関係も疑っています。 先日私の方も大量データ取込をJavaで実行するというのを行いましたが、matchoriのように件数を取り込むうちにパフォーマンスが下がっていきました。確かにCommitは関係なさそうですね・・・ いい加減仕事にならなかったので、大量データをいったんDBのテーブルレイアウトとのCSVにプ変換するPGを作成して、DBのツールでインポートしましたが・・・ プログラムの組みかたがいけないのかも知れないですね、SQL発行部分とか、コネクション管理とか・・・

回答No.1

断定はできませんが大量データでDBにアクセスかけているのでJavaではなくDBの方でメモリ不足が発生しているかもしれないですね。 Javaのコード上でCommitするタイミングを短くしてみてはいかがでしょうか?

matchori
質問者

お礼

Commitタイミングは短くしましたが変わらずです。DBの共有メモリ関係も疑っています。

matchori
質問者

補足

Commitを10000件から100件にしても変わりませんでした。 よろしくお願いします。

関連するQ&A