Skip to Main Content

ODP.NET

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Memory Leak with OracleConnection Pooling

415662Feb 26 2004 — edited Jul 5 2006
Has 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;
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 2 2006
Added on Feb 26 2004
16 comments
6,666 views