问题 :内存泄漏(累积)随着时间的推移,并且最终达到99%的容量。
我有以下的C#
使用while循环不断推动数据移植到PostgreSQL数据库的代码。 我真的很挣扎,因为我不是一个C#
程序员。 我的主要语言是Python
。 我一直在试图查找C#
的引用来解决我的问题,但没有成功因为我根本不明白大量的语法。 在C#
代码是由我公司别人写的,但他现在不可用。
下面是代码:
var connString = "Host=x.x.x.x;Port=5432;Username=postgres;Password=password;Database=database";
using (var conn = new Npgsql.NpgsqlConnection(connString)){
conn.Open();
int ctr = 0;
// Insert some data
while(@tag.TerminateTimeScaleLoop == 100)
{
@Info.Trace("Pushed Data: PostGre A " + ctr.ToString());
using (var cmd = new Npgsql.NpgsqlCommand())
{
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO TORQX VALUES (@r,@p)";
cmd.Parameters.AddWithValue("r", System.DateTime.Now.ToUniversalTime());
cmd.Parameters.AddWithValue("p", @Tag.RigData.Time.TORQX);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd.CommandText = "INSERT INTO BLKPOS VALUES (@s,@t)";
cmd.Parameters.AddWithValue("s", System.DateTime.Now.ToUniversalTime());
cmd.Parameters.AddWithValue("t", @Tag.RigData.Time.BLKPOS);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
// @Info.Trace("Pushed Data: PostGre " + ctr.ToString());
}
ctr = ctr + 1;
}
@Info.Trace("Pushed Data: PostGre A Terminated");
该代码成功建立之初的连接,并且只使用一个连接的整个时间。 它正确地插入数据到数据库。 但经过内存容量达到99%,其不插入得非常好。 问题我能想到的来源是,这个代码是不断创造新的对象,而是一个迭代完成后不会清除对象。 谁能告诉我在哪里的问题来源是与这个提供可能的解决方案?
++请理解,我不是一个C#程序员...我不是太熟悉的内存处理概念。 但我会尽我所能理解