Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Типовые вопросы по C#.NET, на собеседовании 
V
    Опции темы
ДобренькийПапаша
Дата 11.9.2009, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



PashaPash, Перечислите, пожалста, базовые паттерны. И что значит "сколько всего управляемых куч в .NET???"


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
PashaPash
Дата 11.9.2009, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ДобренькийПапаша @  11.9.2009,  17:15 Найти цитируемый пост)
PashaPash, Перечислите, пожалста, базовые паттерны. И что значит "сколько всего управляемых куч в .NET???" 

Базовые - субъективно - Singleton, Factory на уровне "как реализовать". IoC/DI, Query Object, Data Mapper, Metadata Mapping, Repository. Последние обычно не по названиям, а в виде "расскажите как был построен DAL на вашем последнем проекте".
А управляемых куч - как минимум две. Но до этого уровня никто не добирается. Все обламываются на на "а как GC узнает, что объект больше не используется?" - все предпочитают работать с GC как с черным ящиком, из которого изредка выскакивают грабли  :(


--------------------
PM MAIL WWW   Вверх
ДобренькийПапаша
Дата 11.9.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Цитата(PashaPash @ 11.9.2009,  19:00)
"а как GC узнает, что объект больше не используется?"

Ведёт счётчик ссылок и если счётчик равен нулю, то удаляет, вроде так)))
Ну окей. Всем спасибо.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
PashaPash
Дата 11.9.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ДобренькийПапаша @  11.9.2009,  19:18 Найти цитируемый пост)

Ведёт счётчик ссылок и если счётчик равен нулю, то удаляет, вроде так)))

неа, не угадал smile


--------------------
PM MAIL WWW   Вверх
Rohoss
Дата 11.9.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 2
Всего: 18



Цитата(PashaPash @  11.9.2009,  19:50 Найти цитируемый пост)
Цитата(ДобренькийПапаша @  11.9.2009,  19:18 )Ведёт счётчик ссылок и если счётчик равен нулю, то удаляет, вроде так)))неа, не угадал 

Вроде так… Только счётчик ссылок это уже относится к COM. А GC проверяет участки занятой памяти, и смотрит, ссылаются ли на неё объекты.

Добавлено через 10 минут и 41 секунду
Цитата(PashaPash @  11.9.2009,  19:00 Найти цитируемый пост)
А управляемых куч - как минимум две

Одна из куч – это та, в которой находятся объекты, которые живут долго… Есть предположения, что чем дольше прожил объект, тем дольше он проживёт, а значит нет смысла его постоянно проверять.

Добавлено через 12 минут и 30 секунд
Типа разные поколения объектов. А разве может быть больше двух куч? Вроде как есть ещё какая – то куча для особо больших объектов?


--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
PashaPash
Дата 11.9.2009, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Rohoss, уже ближе. На самом деле GC просто пробегается от GC-корней - статических полей, локальных переменных, и т.д., и строит список используемых объектов. И потом перекладывает используемые объекты поплотнее. Что избавляет его от необходимости хранить статус каждого участка памяти. И потом в эту простую систему вписывается куча хаков для pinned-объектов, поддержки поколений, финализации и объектов больше 85000 байт :(
А как оно на самом деле там внутри работает - никто не знает smile

Кстати, на собеседованиях обычно спрашивают совсем не то, что на самом деле требуется от разработчика.


--------------------
PM MAIL WWW   Вверх
ДобренькийПапаша
Дата 13.9.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Цитата

А управляемых куч - как минимум две.


Только что, прочитал у Троелсена, цитирую:
"Вполне допустимо считать, управляемую динамическую память единым регионом в памяти".

Да, там была речь про особо крупные объекты, к ним сборщик обращается реже. Но это не меняет дела. Управляемая куча, по сути, одна...
Я, собственно, всегда так думал)))


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
jonie
Дата 13.9.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118





--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
PashaPash
Дата 14.9.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(ДобренькийПапаша @  13.9.2009,  18:57 Найти цитируемый пост)

Только что, прочитал у Троелсена, цитирую:
"Вполне допустимо считать, управляемую динамическую память единым регионом в памяти".

Вполне допустимо на уровне "прочитал Троелсона". На самом деле есть особенности для многопроцессорных систем - там по одной физической куче на процессор. И для больших объектов - фрагментация LoH, она же "почему упало с OutOfMemory, когда памяти еще много".


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.