Ответы пользователя по тегу .NET
  • Где хранится статическая переменная класса в.Net?

    Статическая переменная храниться в 1 экземпляре в памяти, и мета данных сборки на HDD.
    Объект - хранит в себе все статические поля и методы (паттерн Flyweight).
    Экземпляр - хранит в себе все не статические поля класса. (иначе он бы хранил не изменяемые копии повторяющихся данных).
    На Youtube канал ITVDN, бесплатно доступна лекция из курса "C# Базовый", посмотрите.
    Ответ написан
    Комментировать
  • Как преобразовать объекты со множеством ссылок в объекты без ссылок?

    Используйте - Универсальные классы (Руководство по программированию на C#)
    https://msdn.microsoft.com/ru-ru/library/sz6zd40f.aspx
    Например "List" будет хранить коллекцию структур для int, а не упакованных объектов.
    Погуглите на слово "Generic Class ".
    Ответ написан
    Комментировать
  • Как "закрепить объект" в куче?

    Вы Рихтера внимательно читали?
    Второе поколение - это большие объекты ( конкретный размер зависит от ПК), сразу 2-е поколение.
    Объект можно застолбить за определенным адресом в памяти, и об этом тоже написано в книге.
    Точно не помню но вроде volatile не только делает объект потоко безопасным, но еще и запрещает компилятору оптимизировать участок кода. (прочитайте еще раз).

    Повторял заметки, вот ответ:
    Мониторинг и управление сборщиком мусора на объекте.
    Вызываем статический метод Alloc объекта GCHandle, передаем ссылку на объект и тип GCHandleType в котором:
    1) Weak - мониториг, обнаруживаем что объект более не доступен, финализатор мог выполниться.
    2) WeakTrackResurrection - мониторинг, обнаруживаем что объект более не доступен, финализатор точно был выполнен (при его наличии).
    3) Normal - контроль, заставляет оставить объект в памяти, память занятая этим объектом может быть сжата.
    4) Pinned - контроль, заставляет оставить объект в памяти, память занятая этим объектом не может быть сжата (т.е. перемещена).
    Ответ написан
    Комментировать