[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 メーリングリストの案内