Потребление памяти в CF против Full Framework - PullRequest
1 голос
/ 14 мая 2011

Мне было интересно, отличается ли потребление памяти в Full Framework от Compact Framework для типов и классов, которые совместимы между ними.Я также хотел бы знать, нацеливаю ли я сборку на компактный каркас (библиотека .dll), и ссылаюсь на нее на настольном компьютере.Будут ли использованы типы из полного фреймворка или компакта.Если это последнее, я предполагаю, что потребление памяти должно быть таким же, но так ли это?Моя интуиция заключается в том, что компактные типы каркасов проще, поскольку у них часто меньше методов, и многие классы отсутствуют.Но одинаково ли представление памяти для объекта?Это зависит от архитектуры?(Например, на ARM vs x86). Есть ли ресурс, где я могу найти больше информации по этой теме?

1 Ответ

1 голос
/ 14 мая 2011

Я бы сказал, что это во многом зависит от специфики того, на что вы смотрите.Например, если у меня есть простой объект:

public class Foo
{
    public int ID { get; set; }
    public string Name { get; set; }
}

Тогда его представление в памяти будет одинаковым в любой из этих структур.

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

При загрузке в FFx он будет использовать сборки FFx для создания экземпляров, поэтому, даже если он былскомпилированный для CF, FFx загрузит его в среде выполнения FFX, а не в CF.

Архитектура процессора не имеет значения, поскольку все они компилируются в IL, который не зависит от процессора.

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

...