Консольное приложение .Net Compact Framework - автоматическое завершение из-за OutOfMemory - PullRequest
0 голосов
/ 28 мая 2018

На безголовом устройстве Windows CE 6.0 R3 я запускаю консольное приложение на основе .Net CF 3.5.Это консольное приложение, состоящее из множества DLL, является управляемым кодом.Кроме того, он не имеет никакой функциональности базы данных и, конечно же, не имеет элементов управления Windows Forms.После некоторой случайной продолжительности, от около 12 часов до 48 часов, это приложение перестает работать и выглядит так, как будто оно молча завершалось во время выполнения CF.Ниже приведены результаты исследования:

  1. Удаленная отладка через VS2008 не показывает никаких исключений времени выполнения.Даже если в меню «Отладка-> Исключения» для «Общих исключений времени исполнения» -> «Система» включена функция «Брошено».

  2. Удаленный монитор производительности .Net CF после завершения работы приложения отображает следующее: Статистика памяти .CM RPM GC A. Используемые байты после GCценность не идет вверх и вниз резко.B. Общее количество использованных байтов После того, как GC показывает странное значение.

  3. Включение отчетов об ошибках Windows CE не помогает, поскольку файлы дампа не создаются.

  4. Единственная подсказка, которая может быть получена, - это когда включена .Net CF Error Logging.После завершения приложения без вывода сообщений создается файл «netcf_Error.log», который обычно содержит одно слово « OutOfMemory ».Это слово иногда появляется только один раз или повторяется несколько раз.

Я предполагаю, что проблема может быть связана с фрагментацией кучи, а не с утечкой памяти, поскольку приложение использует одноразовую выделенную памятьбуферы для выполнения большей части работы.Поэтому мне нужна помощь в понимании:

  1. Является ли нормальное поведение завершения этого тихого приложения во время выполнения .Net CF 3.5?

  2. Как получить большеподробности об этой ошибке 'OutOfMemory'?

...