Rendra Basuki wrote:
> Dear Developers and MySQL Reps,
>
> I recently downloaded mysql connector 3.1.8 to
> replace the old one I have (3.0.9) but it seemed
> that version 3.1.8 takes more memory than 3.0.9
> and also there is a connection properties for auto
> deserialize that causes my SQL getObject to get a
> byte array instead of the object itself.
>
> Moreover, since I updated my connector to 3.1.8 I
> always get a out of heapspace error message and
> then my application just dies. If i revert back to
> version 3.0.9 then evertything is OK again. Please
> tell me why 3.1.8 uses so much more memory than
> 3.0.9?
Rendra,
Most likely you have a non-JDBC-conformant application that doesn't close statements or result sets after it's done with them and relies on the garbage collector to do so. Because the JDBC specification requires that JDBC drivers automatically close Statements when the connection is closed, and result sets when the statement is closed, Connector/J 3.1 is required to maintain references to these objects even after your application is done using them and hasn't closed them. This can cause memory leaks that are beyond the scope of what the JDBC driver can manage, as your application is required to call .close() on these resources when it is done using them. Connector/J 3.0.9 _isn't_ JDBC compliant in this respect, so it didn't have the problem.
> Also, what are the significant advantages or
> improvements from 3.1.8 to 3.0.9?
You'd have to see the CHANGELOG to see everything. The big changes are MySQL-4.1.x support for character sets, server-side prepared statements, MySQL-5.0 support for stored procedures and quite a bit of debugging/profiling functionality.
When used as the JDBC spec intends, Connector/J 3.1.x actually benchmarks faster than Connector/J 3.0.x, and in general uses less memory for many operations.
-Mark
Mark Matthews
Consulting Member Technical Staff - MySQL Enterprise Tools
Oracle
http://www.mysql.com/products/enterprise/monitor.html