![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
PashaPash, Перечислите, пожалста, базовые паттерны. И что значит "сколько всего управляемых куч в .NET???"
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Базовые - субъективно - Singleton, Factory на уровне "как реализовать". IoC/DI, Query Object, Data Mapper, Metadata Mapping, Repository. Последние обычно не по названиям, а в виде "расскажите как был построен DAL на вашем последнем проекте". А управляемых куч - как минимум две. Но до этого уровня никто не добирается. Все обламываются на на "а как GC узнает, что объект больше не используется?" - все предпочитают работать с GC как с черным ящиком, из которого изредка выскакивают грабли :( |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Ведёт счётчик ссылок и если счётчик равен нулю, то удаляет, вроде так))) Ну окей. Всем спасибо. -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
||||
|
||||
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 2 Всего: 18 |
Вроде так… Только счётчик ссылок это уже относится к COM. А GC проверяет участки занятой памяти, и смотрит, ссылаются ли на неё объекты. Добавлено через 10 минут и 41 секунду Одна из куч – это та, в которой находятся объекты, которые живут долго… Есть предположения, что чем дольше прожил объект, тем дольше он проживёт, а значит нет смысла его постоянно проверять. Добавлено через 12 минут и 30 секунд Типа разные поколения объектов. А разве может быть больше двух куч? Вроде как есть ещё какая – то куча для особо больших объектов? |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Rohoss, уже ближе. На самом деле GC просто пробегается от GC-корней - статических полей, локальных переменных, и т.д., и строит список используемых объектов. И потом перекладывает используемые объекты поплотнее. Что избавляет его от необходимости хранить статус каждого участка памяти. И потом в эту простую систему вписывается куча хаков для pinned-объектов, поддержки поколений, финализации и объектов больше 85000 байт :(
А как оно на самом деле там внутри работает - никто не знает Кстати, на собеседованиях обычно спрашивают совсем не то, что на самом деле требуется от разработчика. |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
Только что, прочитал у Троелсена, цитирую: "Вполне допустимо считать, управляемую динамическую память единым регионом в памяти". Да, там была речь про особо крупные объекты, к ним сборщик обращается реже. Но это не меняет дела. Управляемая куча, по сути, одна... Я, собственно, всегда так думал))) -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Вполне допустимо на уровне "прочитал Троелсона". На самом деле есть особенности для многопроцессорных систем - там по одной физической куче на процессор. И для больших объектов - фрагментация LoH, она же "почему упало с OutOfMemory, когда памяти еще много". |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |