У меня проблема с памятью в моем приложении. Каждый раз, когда я выбираю данные из базы данных и назначаю их Grid, объем памяти увеличивается, а иногда, когда выполняется расширенный поиск, объем памяти достигает 1 ГБ.
Могут быть и другие проблемы с обработкой памяти, но для проверки того, что поиск и привязка данных многократно потребляют хорошее количество памяти, я создал новое приложение winforms, опустил на него кнопку и сетку и написал этот код.
private void button1_Click(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection(connString))
{
SqlDataAdapter adp = new SqlDataAdapter("select * from supplier", con);
DataSet ds = new DataSet();
con.Open();
adp.Fill(ds);
con.Close();
dataGridView1.DataSource = ds.Tables[0];
ds.Dispose();
}
}
Каждый раз, когда я нажимаю на эту кнопку, использование памяти этим приложением увеличивается, иногда на 3 МБ, иногда на 4 МБ и т. Д. В таблице содержится около 2000 записей и 12 столбцов различных типов, таких как datetime
, VARCHAR(100)
, int
и т. Д.
Освобождение памяти через несколько минут Если я перестану повторять операции поиска и привязки.
Почему память просто увеличивается каждый раз, если объем данных одинаков?
Я также попробовал следующий код, но без разницы.
dataGridView1.DataSource = null;
dataGridView1.DataSource = ds.Tables[0];
Я использую Telerik элементы управления в моем исходном приложении. Сетка Telerik потребляет больше памяти, чем DataGridView, но DataGridView работает так же.
Помните, этот пример состоит только из одной формы, кнопки и сетки в этой форме.
Спасибо.