Результаты поиска
Каков наилучший способ поиска ALL вашей памяти при разработке на компактной платформе?
Я использовал CF Remote Performance Monitor, однако это, похоже, только отслеживает память, инициализированную в управляемом мире, в отличие от неуправляемого мира. Ну, я могу только предполагать это, поскольку числа, перечисленные в профилировщике, намного меньше максимально допустимого (32 Мб на CE 5). Профилирование конкретного приложения с помощью RPM показало мне, что общее использование всех кэшей удается получить только около 12 МБ, а затем медленно сжимается, поскольку (я предполагаю) что-то неуправляемое начинает требовать больше памяти. Ползунок памяти в системе также показывает, что устройство очень мало памяти. Если я убью процесс, ползунок покажет, что вся память возвращается. Так что он должен (?) быть этим управляемым процессом, который поглощает память.
Есть ли простой(иш?) мода как можно отслеживать неуправляемое использование памяти каким-то образом, что может позволить мне сопоставить его с соответствующими вызовами P/Invoke?
EDIT: для всех вас, повторных тегов, это не так .NET, помечая вопрос таким образом, путает вещи. Это.NETCF / Компактный Каркас. Я знаю, что они кажутся похожими, но они разные, потому что .NET скалы в то время как CF в основном просто обертка вокруг NotImplementedException.
Как я могу узнать имя исполняющего ?exe?
Компактная платформа не поддерживает Assembly.GetEntryAssembly для определения запуска .exe. Так что есть еще один способ получить имя исполнителя .exe?
EDIT: я нашел ответ в блоге Питера фута: http://peterfoot.net/default.aspx вот код:
byte[] buffer = new byte[MAX_PATH * 2];
int chars = GetModuleFileName(IntPtr.Zero, buffer, MAX_PATH);
if (chars > 0)
{
string assemblyPath = System.Text.Encoding.Unicode.GetString(buffer, 0, chars * 2);
}
[DllImport("coredll.dll", SetLastError = true)]
private static extern int GetModuleFileName(IntPtr hModule, byte[] lpFilename, int nSize);