Re: Memory leak in 8.0 JDBC driver?
От | Dave Cramer |
---|---|
Тема | Re: Memory leak in 8.0 JDBC driver? |
Дата | |
Msg-id | 1E469344-B19D-424E-A6DA-11B159347F1F@fastcrypt.com обсуждение исходный текст |
Ответ на | Re: Memory leak in 8.0 JDBC driver? ("Albe Laurenz" <all@adv.magwien.gv.at>) |
Список | pgsql-jdbc |
On 12-Aug-05, at 11:15 AM, Albe Laurenz wrote: > I think that I have found the memory leak, and it is indeed in the > JDBC > driver. > All code references in the following refer to the 8.0-312 JDBC Source. > > I have an org.postgresql.jdbc3.Jdbc3PreparedStatement containing > INSERT INTO PARENT (ID, NAME, NUMMER) VALUES (?, ?, ?) > I execute this statement thousands of times with different parameters. > After each execution I commit(). > Some of these statements fail due to a constraint violation, then I > rollback(). > > Whenever this statement is executed *and fails*, execution reaches > org.postgresql.core.v3.QueryExecutorImpl.processResults(), line 1280 > where an org.postgresql.util.PSQLWarning is retrieved with the > contents: > LOG: statement: INSERT INTO PARENT (ID, NAME, NUMMER) VALUES ($1, $2, > $3) > > The handler that handles the warning is the anonymous class in > org.postgresql.core.v3.QueryExecutorImpl.sendQueryPreamble(), line > 381. > > This in turn calls > org.postgresql.jdbc2.AbstractJdbc2Statement.StatementResultHandler.han > dl > eWarning(), line 191. > > This causes the SQLWarning to be appended at the end of the warning > chain of > the prepared statement, as you can see in > org.postgresql.jdbc2.AbstractJdbc2Statement.addWarning(), line 546. > > The problem is that the warning chain is never cleared. According > to the > documentation of java.sql.Statement.getWarnings(), > 'The warning chain is automatically cleared each time a statement is > (re)executed' > This obviously does not happen. > > Indeed, when searching the source of the JDBC driver, I cannot find a > single reference > to the clearWarnings() method, nor is > org.postgresql.jdbc2.AbstractJdbc2Statement.warnings > ever reset directly. > > The warnings chain grows endlessly and gobbles up the heap. > > I guess I should file a bug report for this, right? You just did, thanks Dave > > Yours, > Laurenz Albe > > ---------------------------(end of > broadcast)--------------------------- > TIP 2: Don't 'kill -9' the postmaster > >
В списке pgsql-jdbc по дате отправления: