Мы разрабатываем программное обеспечение для автоматизации ресторанов (используя VS.NET C #).И мы используем POS-продукты, большинство из которых имеет процессор Celeron или Atom с оперативной памятью 512 МБ или 1 ГБ.Итак, в начале мы знаем, что мы не можем получить более мощный ПК (я видел предложение типа «Получите лучший компьютер для вашего клиента» :)).
У нас проблема с памятью.Для представления корзины реального покупателя мы используем панель, добавляем настраиваемый элемент управления для представления товара в корзине.Это означает, что многие элементы управления добавляются на панель, а затем удаляются (функция Panel.controls.Clear.) Этот метод вызывает утечку памяти, и программа работает медленно.После поиска и поиска в Google я обнаружил, что функция Panel.Control.Clear () очищает все элементы управления в панели, но не из памяти.Поэтому я отключил панель, чтобы проверить, и все работает нормально.Нет утечки памяти больше.Поэтому я решил удалить эту панель корзины, чтобы сохранить память.Но позже я нашел здесь очень полезные предложения, такие как EmptyWorkingSet.
[DllImport("psapi.dll")]
static extern int EmptyWorkingSet(IntPtr hwProc);
static void MinimizeFootprint()
{
EmptyWorkingSet(Process.GetCurrentProcess().Handle);
}
Затем я добавил код, активировал панель корзины, и ничего не изменилось.Производительность по-прежнему хорошая. Отсутствует утечка памяти, производительность не снижается.Но некоторые говорят, что в здесь и здесь EmptyWorkingSet может вызывать сбои страниц, и это опасно.Я тестирую программу и ничего не случилось.Отлично работает.Вот мои варианты
- Удалить панель корзины, которая вызывает проблемы с памятью.
- После очистки пользовательских элементов управления из cartPanel удалите пользовательские элементы управления из памяти (я не знаю, какно я могу понять это)
- ИСПОЛЬЗОВАТЬ EmptyWorkingSet, но это может вызвать сбои страниц (правда, я не знаю, что означает эта ошибка страницы)
ТАК ЧТО ВЫ СКАЖИТЕ