Mailing List
Home
Forum Home
MySQL General - General MySQL discussion
MySQL++ - Programming with the C++ API to MySQL
MaxDB - Everything about MaxDB, formerly known as SAP DB
ODBC - ODBC with the MySQL Connector/ODBC driver
MySQL on Win32 - Runing MySQL on Windows 9x/Me/NT/2000/XP
Java Help - Mostly related to the MySQL Connector/J driver
Perl - Perl support for MySQL with DBI and DBD::mysql
GUI - MySQL GUI Tools
Announcement
Subjects
Subject: mysql openssl Question
ERROR 1045: Access denied for user: 'root@localhost ' (Using
password: NO)
Update one field with more fields from another table
Subject: Getting Identity after INSERT
ERROR 2002: Can 't connect to local MySQL server through socket
mysql test 4 1 fails with the gis test
Subject: MySQL Cluster Software
Downgrade Mysql from 4 to 3 23
Mysql 4 0 Oracle Stored Procedure Trigger Conversion
Can 't access mysql after kernel upgrade
Executing MySQL Commands From Within C Program
Comparing and writing out BLOBS
Subject: Re: Preventing Duplicate Entries
FULLTEXT query format question
Strange behavior, Table Level Permission
Does the binary log enabling affect the MySQL performances?
mysql:it 's a db not a dbms how it 's possible?!
mysql have same function mthod as Oracle decode()
 
Subject: Re: Memory management using Res and Row

Subject: Re: Memory management using Res and Row

2007-10-24       - By Warren Young

 Back
Gary Anderson wrote:
> When the application exits, I seem to have a lot of
> un-released memory (leaks) that appear to be holding items read from the
> database during processing.  

Whenever you think you have a leak, it's essential that you take the
next step, which is to correlate memory use with some work unit.  Does
memory use go up as a function of time, or query count, or rows
retrieved, or what?  If it remains fixed, it's "overhead", not a "leak".

There is known overhead in the MySQL C API library, and a memory
debugger is going to show it as a "leak" because it doesn't know better.
 There's a way to release it -- see the C API docs -- but since most
programs have to access the database for their entire run time, there's
not much point in doing it; any platform MySQL runs on is going to have
decent memory management, so it releases unfreed memory at exit.  As a
result, we don't bother to expose this as a feature in MySQL++.

> The manual indicates that a ResUse object
> contains a purge() method to release the resources held by the object,

This isn't generally needed.  It's more an implementation detail than
anything else.  A quick glance at the source shows that ~ResUse() calls
it, so if you have a leak due to not calling purge(), you really have a
leak due to not destroying your ResUse objects.

> but I can't seem to find similar methods for Result,

Result derives from ResUse.

> ...Row or Query.  Do such methods exist?

You mean other than the destructors?

> If not, how is this allocated memory freed?

The same way memory is freed in any C++ program.

--
MySQL++ Mailing List
For list archives: http://lists.mysql.com/plusplus
To unsubscribe:    http://lists.mysql.com/plusplus?unsub=mysql@(protected)