我知道我有内存泄漏。我正在使用 Winforms 用 C# 编写。基本上,我的程序有很多按钮。每 0.01 秒,计时器类调用一个函数以从 gps 获取 gps 数据。每次按下按钮时,它都会与最近的 gps 点配对,并将它们都推送到数据库。我不知道泄漏在哪里。可能与事件处理程序有关吗?每个按钮都有一个+=,但从来没有一个-=。或者当我将 gps 指向 gui 时可能是这样吗?我正在使用实体框架写入数据库。
谢谢,
杰西
编辑:我知道这是内存泄漏,因为当我进入任务管理器时,我看到我的程序使用的内存一直在增加。此外,计时器的触发频率不会越晚……从 0.01 秒到大约 0.5 秒。在自动生成的代码中,每个按钮都被订阅(最后一行):
this.commentsGoButton.Location = new System.Drawing.Point(348, 23);
this.commentsGoButton.Name = "commentsGoButton";
this.commentsGoButton.Size = new System.Drawing.Size(67, 70);
this.commentsGoButton.TabIndex = 12;
this.commentsGoButton.Text = "Enter Comment";
this.commentsGoButton.UseVisualStyleBackColor = true;
this.commentsGoButton.Click += new System.EventHandler(this.commentsGoButton_Click);
另外,我正在调用这个函数:
GPS gps1 = new GPS(Lat, Longi, Alt, Yaw, Pit, Rol);
info.takeInGPS(gps1);
str = Lat + " " + Longi + " " + Alt + " " + Yaw + " " + Pit + " " + Rol + " ";
gui.addToTextBox(str);
GPS是我从中调用它的类。GPS 是从 GPS 中获取点的类。它由 GUI 类中的计时器调用。GPS 将其传递给 info 以传递给数据库和 GUI 类以使用以下方式发布它:
public void addToTextBox(string s)
{
textBox.Text += s += "\r\n";
textBox.SelectionStart = textBox.TextLength; //scrolling stuff
textBox.ScrollToCaret();
}
信息这样做:
public void takeInGPS(GPS g)
{
gps = g;
write(gps);
}
哪些 3rd 方程序会指出内存泄漏在哪里?我每秒创建 100 个新 GPS 对象这一事实是否会成为问题?我不是在覆盖它们吗?