[Seasar-user:15032] Re: [S2JDBC] SQL自動生成のメモリ消費
Takashi ARAKANE
[E-MAIL ADDRESS DELETED]
2008年 7月 15日 (火) 11:29:22 JST
荒金と申します。
小林さん、ごめんなさい、ごめんなさい、ごめんなさい。
最初に示したコードですが、@RequiresNewTx の位置が誤っていました。
誤: @RequiresNewTx public void exec(final int count) { 〜 }
正: @RequiresNewTx public void insert(final String name) { 〜 }
> Date: Tue, 15 Jul 2008 04:00:28 +0900
↑な時間に対応していただいたのに orz
手元で修正した後、再度VisualVMでのヒープを見てみました。(添付画像)
結果としては、ResultSet や PreparedStatement が残った状態は同様ですが、
2008/07/15 5:00 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:
> このケースで OutOfMemoryError になり,PreparedStatement の
> 作成/クローズをループの内側でするように exec() を
[snip]
> と修正して OOME にならないのであれば,Connector/J の
> 問題というか S2JDBC との相性の問題になりますね.
@RequiresNewTx が、ループの中に存在するということは、
検証用コードにおいてのPreparedStatement の作成/クローズも
下記に示しますとおりループ中になると思うので・・・・・
Connector/J と S2JDBCとの相性が悪いということでしょうか?
public class Employee3Logic {
public DataSource dataSource;
public void exec(final int count) {
for(int i = 0; i < count; i++) {
String name = new StringBuilder()
.append("example_")
.append(i)
.toString();
try {
insert(name);
} catch(SQLException e) {
//
}
}
}
@RequiresNewTx
public void insert(final String name) throws SQLException {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = dataSource.getConnection();
ps = con.prepareStatement(
"INSERT INTO employee (name, job_type, salary, version) " +
"VALUES (?, ?, ?, 1)");
ps.setString(1, name);
ps.setString(2, JobType.ANALYST.name());
ps.setInt(3, 100);
ps.executeUpdate();
rs = ps.getGeneratedKeys();
if(rs.next()) {
rs.getInt(1);
}
} finally {
rs.close();
ps.close();
con.close();
}
}
public static void main(String...args) {
try {
SingletonS2ContainerFactory.setConfigPath("app.dicon");
SingletonS2ContainerFactory.init();
SingletonS2Container.getComponent(Employee3Logic.class).exec(100000);
} finally {
SingletonS2ContainerFactory.destroy();
}
}
}
--
Takashi ARAKANE <[E-MAIL ADDRESS DELETED]>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: EmployeeLogic.png
Type: image/png
Size: 15147 bytes
Desc: 無し
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20080715/80398fd7/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Employee2Logic.png
Type: image/png
Size: 15405 bytes
Desc: 無し
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20080715/80398fd7/attachment-0003.png>
Seasar-user メーリングリストの案内