[Seasar-user:21408] テーブルの全データをselectすると、OutOfMemoryErrorが発生する
Toshiya Fukushima
[E-MAIL ADDRESS DELETED]
2012年 8月 17日 (金) 13:25:13 JST
初めて投稿します。よろしくお願いいたします。
早速ですが、質問させて頂きます。
下記の現象で困っております。
原因がわかる方いらっしゃましたら、ご教授願いいたします。
-----
■現象・状況
あるテーブルの全データ10万件程をselectすると、
メモリ使用量が急激に増加して「OutOfMemoryError」が発生します。
■詳細・解析内容
S2DaoInterceptor#invoke(MethodInvocation)
selectの実行は上記メソッド内のexecuteで行われていると思われます。
execute実行前後のメモリ使用量をログに出力して確認すると、
テーブルから取得した全データサイズ以上にメモリを消費しているように
見受けられました。
■環境
Tomcat6.0.35:最大ヒープサイズ1GB
あるテーブルの全データサイズ:128MB
-----
select実行後、結果取得の部分において、メモリを消費するような
処理が行われていたりするのでしょうか。
(少量のデータであれば問題ないが、大量のデータを取得すると
問題があるなど。)
※そもそもテーブルの全データを取得するSQLが実行されてしまう
というアプリ上の問題は別途確認していますが、select実行後に
メモリを大量に消費してしまう原因は知りたいと考えております。
以上、よろしくお願いいたします。
Seasar-user メーリングリストの案内