Memory Leak with OracleConnection Pooling
415662Feb 26 2004 — edited Jul 5 2006Has anyone noticed a memory leak when using connection pooling? I experience a leak of 5 or 6 megabytes per every 1000 transactions. When pooling is turned off the leak is still present but it's much lower, on the order of 200 kb per 1000 transactions. The code we're using to reproduce the issue is listed below. We're using ODP.NET 9.2.0.4 against an Oracle 9.2.0.4 database.
string sql = "begin open :outcur for select * from feeds; end;";
int entity_id;
OracleConnection conn;
OracleDataReader rdr;
OracleTransaction trans;
OracleCommand cmd;
OracleParameter param;
int i;
while (i++ < 1000000)
{
conn = new OracleConnection(connectionString);
conn.Open();
cmd = new OracleCommand(sql, conn);
param = new OracleParameter("outcur", OracleDbType.RefCursor, ParameterDirection.ReturnValue);
cmd.Parameters.Add(param);
trans = conn.BeginTransaction();
rdr = cmd.ExecuteReader();
while(rdr.Read())
{
entity_id = (int)rdr.GetDecimal(0);
}
rdr.Close();
rdr.Dispose();
rdr = null;
if (param.Value != System.DBNull.Value) ((OracleRefCursor)param.Value).Dispose();
param.Dispose();
param = null;
cmd.Dispose();
cmd = null;
trans.Commit();
trans.Dispose();
trans = null;
conn.Close();
conn.Dispose();
conn = null;
}
// table schema
CREATE TABLE FEEDS
(
FEED_ID INTEGER,
PROVIDER_ID INTEGER,
NAME VARCHAR2(30 BYTE),
COPYRIGHT VARCHAR2(4000 BYTE)
)
TABLESPACE CR05_META
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCACHE
NOPARALLEL;