У меня есть приложение C # / WPF, которое предназначено для запуска на небольшом ПК с 512 МБ памяти.Если его оставить для запуска, в конечном итоге генерируется исключение OutOfMemoryException.Это может занять от 12 часов до 2 дней.
Используя как ProcessExplorer, так и .NET Memory Profiler, я не вижу доказательств того, что память, используемая моим приложением, со временем увеличивается.Существует просто типичная схема небольшого роста, за которой следует сборка мусора.
Я добавил код для распечатки всех запущенных процессов и информации об их памяти при возникновении исключения.В настоящее время я просто жду, когда это случится снова.Я должен упомянуть, что компьютеры основаны на флэш-памяти и подкачка отключена.512 является жестким ограничением.
Это произошло на двух отдельных компьютерах.Информация об исключениях была одинаковой в обоих случаях:
Top Level Exception - System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
at System.Windows.Media.Composition.DUCE+Channel.SendCommand(Byte* pCommandData, Int32 cSize)
at System.Windows.Media.MediaContext.EnterInterlockedPresentation()
at System.Windows.Media.MediaContext.ScheduleNextRenderOp(TimeSpan minimumDelay)
at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.AnimatedRenderMessageHandler(Object resizedCompositionTarget)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
Любое понимание приветствуется!