Имеется ли в компоненте неуправляемой камеры оболочка C #? Если это так, он реализует IDisposable? Гарантируя, что вы утилизируете объект камеры (если обернут), вызовет его деструкторы в неуправляемом коде
Неуправляемый код связан с вашим кодом C # через импорт DLL? Если это так, убедитесь, что вы вызываете все методы типа «Close ()» для освобождения памяти в C #. Я бы посоветовал обернуть компонент камеры в ваш собственный класс .NET, реализующий IDisposable, чтобы аккуратно упаковать это
Вы подписываетесь на какие-либо события .NET и не отписываетесь? Например Camera.ImageReceived + = новый EventHandler ...
Если оставить подписки на события .NET открытыми, это может вызвать незначительную утечку памяти, поскольку сборщик мусора не может собрать объект, пока есть ссылка на него (через подписку на событие)
Наконец, грубый тест для проверки утечки памяти - оставить ваше приложение работающим на ночь с несколькими операциями создания / удаления окна камеры. Посмотрите, получите ли вы OutOfMemoryException на следующий день. Как упоминалось в предыдущих постерах, диспетчер задач не собирается точно сообщать об использовании памяти приложением .NET, однако кислотный тест заключается в том, освобождает ли ГХ в конечном итоге память или продолжает расти бесконечно?