S2Dao使用時のメモリリーク
の編集
https://www.seasar.org/wiki/?S2Dao%E4%BD%BF%E7%94%A8%E6%99%82%E3%81%AE%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%AF
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
CreateSandboxJavaProjectTemplateWithMaven2
●問題点~ SQL検索を実行していくと徐々にJVMのpermanent領域を圧迫しGCのタイミングでも開放されず~ java.lang.OutOfMemoryError: PermGen space が発生してしまう。~ ※SQL検索は一度の実行ではなく複数回(本事象では500回程度)実行すると発生します。 ●環境~ OS:Windows2008Server~ Java:JDK V6.0.13~ DB:Microsoft SQLServer 2005 Standard Edition~ Tomcat:Tomcat V6.0.18~ (オプション設定)~ Xms512m~ Xmx512m~ XX:PermSize=512M~ XX:MaxNewSize=512m~ XX:MaxPermSize=512m~ ●実装方法~ S2Daoで@SqlFileを使用しSQLの実行を行う。~ XXXXXConditionDtoを使用し引数を条件を受け渡す。~ SQLファイルを2つ用意する ※SQLの内容は同じ~ 一方だけにWhere句にIf文を追加する~ 例)~ /*IF BBB != null*/~ AND AAAA >= /*BBB*/~ /*END*/~ IF文の結果もfalseになるので実行されるSQLは全く同じ~ ●結果~ IF文がないSQLファイルの場合 ⇒ OutOfMemoryErrorが発生しない~ IF文があるSQLファイルの場合 ⇒ OutOfMemoryErrorが発生~ S2DaoのIF文を解析するクラスがメモリに溜まっていると推測されますが~ 解決方法はありますでしょうか?~ ●回答 ちょっとこの情報だと起きている情報がわからないので、 プロファイラや-Xverbosegcでどのクラスが「溜まっている」のか調べられないでしょうか。 そのうえで新しい情報があれば、[[Seasar-Userメーリングリスト:https://ml.seasar.org/mailman/listinfo/seasar-user]]までよろしくお願いします。
タイムスタンプを変更しない
●問題点~ SQL検索を実行していくと徐々にJVMのpermanent領域を圧迫しGCのタイミングでも開放されず~ java.lang.OutOfMemoryError: PermGen space が発生してしまう。~ ※SQL検索は一度の実行ではなく複数回(本事象では500回程度)実行すると発生します。 ●環境~ OS:Windows2008Server~ Java:JDK V6.0.13~ DB:Microsoft SQLServer 2005 Standard Edition~ Tomcat:Tomcat V6.0.18~ (オプション設定)~ Xms512m~ Xmx512m~ XX:PermSize=512M~ XX:MaxNewSize=512m~ XX:MaxPermSize=512m~ ●実装方法~ S2Daoで@SqlFileを使用しSQLの実行を行う。~ XXXXXConditionDtoを使用し引数を条件を受け渡す。~ SQLファイルを2つ用意する ※SQLの内容は同じ~ 一方だけにWhere句にIf文を追加する~ 例)~ /*IF BBB != null*/~ AND AAAA >= /*BBB*/~ /*END*/~ IF文の結果もfalseになるので実行されるSQLは全く同じ~ ●結果~ IF文がないSQLファイルの場合 ⇒ OutOfMemoryErrorが発生しない~ IF文があるSQLファイルの場合 ⇒ OutOfMemoryErrorが発生~ S2DaoのIF文を解析するクラスがメモリに溜まっていると推測されますが~ 解決方法はありますでしょうか?~ ●回答 ちょっとこの情報だと起きている情報がわからないので、 プロファイラや-Xverbosegcでどのクラスが「溜まっている」のか調べられないでしょうか。 そのうえで新しい情報があれば、[[Seasar-Userメーリングリスト:https://ml.seasar.org/mailman/listinfo/seasar-user]]までよろしくお願いします。
テキスト整形のルールを表示する