Мое приложение замедляется после 1 часа использования - PullRequest
0 голосов
/ 21 апреля 2020

Я заметил, что мое приложение становилось медленным после некоторого времени использования, не очень много, но достаточно, чтобы я заметил. Однако, чтобы убедиться, что я не схожу с ума, я начал измерять итерации и показывать на экране среднее значение каждые 1000 итераций. В течение часа он работал на 20–40 мс медленнее, чем при запуске.

После проверки отсутствия утечек памяти я заметил, что часть памяти даже освобождалась. (Я начал с 500 МБ оперативной памяти, что вызвано загрузкой набора данных изображений, которые мое программное обеспечение использует для своих функций), но через некоторое время он достиг около 350 МБ.

Мое программное обеспечение представляет собой макрос на основе сравнения изображений, у которого есть основной l oop, который непрерывно выполняет два основных потока после их завершения, для двух разных типов обнаружения и использования методов клавиатуры / мыши. После запуска этих потоков l oop вызовет G C .Collect () и будет ждать 10 мсек, просто чтобы дать ему отдохнуть.

Я использую его для получения значений из разных областей Экран и действовать с помощью мыши / клавиатуры в соответствии со структурой конфигурации, которая заполняется в основной форме, однако l oop должен работать в диапазоне от 250 до 350 мс, иначе он не будет работать правильно, поэтому я не могу позволить нужно добавить даже 20 мс ... Это используется в онлайн-игре, поэтому каждая миллисекунда того стоит.

Заранее спасибо.

@ Edit 1: Кажется, "проблема с потерей памяти" была решена путем удаления G C .Collect () в результате чтения статьи, рекомендованной @ ThomasSportouch.

@ Edit 2: после тестирования в течение 30 минут и проверки того же времени Я заметил, что не было потери памяти, которая выглядела хорошо. Я приступил к просмотру кода и заметил, что неправильно обрабатывал / создавал некоторые потоки, поэтому произошла действительно небольшая утечка памяти (2 МБ каждые 15 минут). Также я решил изменить приоритет основных потоков на «Above Normal».

@ Окончательное редактирование: после исправления всего кода и еще 2 часов тестирования кажется, что оно исправлено. Спасибо всем, кто ответил!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...