Сведения о вопросе

HEIGTH

16:30, 17th August, 2020

Теги

Каков наилучший способ поиска ALL вашей памяти при разработке на компактной платформе?

Просмотров: 472   Ответов: 3

Я использовал CF Remote Performance Monitor, однако это, похоже, только отслеживает память, инициализированную в управляемом мире, в отличие от неуправляемого мира. Ну, я могу только предполагать это, поскольку числа, перечисленные в профилировщике, намного меньше максимально допустимого (32 Мб на CE 5). Профилирование конкретного приложения с помощью RPM показало мне, что общее использование всех кэшей удается получить только около 12 МБ, а затем медленно сжимается, поскольку (я предполагаю) что-то неуправляемое начинает требовать больше памяти. Ползунок памяти в системе также показывает, что устройство очень мало памяти. Если я убью процесс, ползунок покажет, что вся память возвращается. Так что он должен (?) быть этим управляемым процессом, который поглощает память.

Есть ли простой(иш?) мода как можно отслеживать неуправляемое использование памяти каким-то образом, что может позволить мне сопоставить его с соответствующими вызовами P/Invoke?

EDIT: для всех вас, повторных тегов, это не так .NET, помечая вопрос таким образом, путает вещи. Это.NETCF / Компактный Каркас. Я знаю, что они кажутся похожими, но они разные, потому что .NET скалы в то время как CF в основном просто обертка вокруг NotImplementedException.



  Сведения об ответе

darknet

13:03, 10th August, 2020

Попробуйте включить ведение журнала Interop .

Кроме того, если у вас есть доступ к коду собственного dll, который вы используете, проверьте это: http://msdn.microsoft.com/en-us/netframework/bb630228.aspx


  Сведения об ответе

DO__IT

05:46, 18th August, 2020

Я определенно боролся с неуправляемыми проблемами в управляемом приложении C# какое-то время-это нелегко.

То, что я нашел, чтобы быть наиболее полезным, чтобы иметь регулярный вывод в текстовый файл журнала. Например, вы можете печатать вывод GlobalMemoryStatus каждые несколько минут вместе с журналом каждый раз, когда вы загружаете новую форму. Оттуда можно, по крайней мере, увидеть, что либо память постепенно стирается, либо огромные куски памяти исчезают в определенное время суток.

Для нас мы обнаружили постепенную потерю памяти в течение всего дня, пока устройство использовалось. Оттуда мы в конечном итоге обнаружили, что устройство сканирования штрих-кода инициализируется без особой причины в нашем базовом классе формы (я обвиняю предыдущего разработчика! :-)

Настройка этого журнала может быть небольшой хлопот,но для нас это принесло огромные дивиденды в долгосрочной перспективе, особенно с устройством в реальном использовании мы можем получить реальные данные, инструменты, трассировки стека из исключений и т. д.


  Сведения об ответе

SSESION

08:01, 7th August, 2020

Хорошо, я использую C++ на CE, а не C#, так что это может быть не полезно, но...

Я использую пакет под названием Entrk toolbox , который отслеживает использование памяти и ресурсов, утечки и исключения в разделе Windows CE. Очень похоже на облегченную версию boundschecker CE. Делает трюк в большинстве случаев.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться