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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поколения, GC.Collect(i); 
V
    Опции темы
tab
Дата 7.10.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.10.2006
Где: RF, Dolgopa

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



Каким поколением будут принадлежать вновь созданные объекты, и как они переводятся в следующее поколение?
Как вообще работает механизм поколений smile 
PM MAIL   Вверх
Void
Дата 7.10.2006, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



GC в .NET.
Также стоит почитать Рихтера.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
tab
Дата 7.10.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.10.2006
Где: RF, Dolgopa

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



GC смотрел естественно, но сие ситуацию прояснило не до конца..
Непонятно например, почему вновь созданный объект получает 2 - ое поколение, а не 0 -  smile 
PM MAIL   Вверх
mr.DUDA
Дата 7.10.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Зависит от наличия ссылок на этот объект.


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 7.10.2006, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



tab, поколения показывают сколько сборок мусора "пережил" объект.
По умолчанию считается, что если объект пережил две сборки мусора, то он не удаляется никогда  smile   smile 
P.S. Пережил означает, что в момент сборки мусора на него была ссылка  smile 
PM MAIL WWW ICQ   Вверх
Void
Дата 7.10.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Цитата(tab @  7.10.2006,  21:57 Найти цитируемый пост)
почему вновь созданный объект получает 2 - ое поколение, а не 0

Во второе поколение сразу попадают большие объекты (AFAIK, >85000 байт). Они хранятся в специальной куче, которая не сжимается (дорогое удовольствие копировать такие области памяти).


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
tab
Дата 7.10.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.10.2006
Где: RF, Dolgopa

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



Хорошо. Пусть так, тогда почему
Код

Test test = new Test();
int generation = GC.GetGeneration(test)
 

Итог: generation = 2. Сборки мусора если я правильно понимаю 
должны считаться только после создания объекта, или я не прав?

Добавлено @ 20:34 

там никак не >85000 байт
PM MAIL   Вверх
Void
Дата 7.10.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Цитата(tab @  7.10.2006,  22:32 Найти цитируемый пост)
там никак не >85000 байт 

Тогда примерный код класса в студию. Иных ситуаций, когда объект сразу при создании загоняется во 2-е поколение, я не знаю.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
ivashkanet
Дата 7.10.2006, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



А у меня наоборот  smile 
Более 350 МБ-ый объект получает нулевое покаление  smile 
Код

 class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            int generation = GC.GetGeneration(test);

            Console.ReadKey();
        }
    }
    public class Test
    {
        public int[] i;
        public Test()
        {
            i = new int[100000000];
        }
    }

PM MAIL WWW ICQ   Вверх
Void
Дата 7.10.2006, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



ivashkanet, естественно, ведь он не мегабайтный, а состоит всего лишь из стандартного заголовка и одной ссылки на массив smile
А вот сам массив будет во 2-м поколении.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
ivashkanet
Дата 7.10.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Void, точно  smile 
Пасиб

Добавлено @ 21:13 
Так что? Получается мой массив может жить после смерти родителя?  smile  smile  smile  smile 
PM MAIL WWW ICQ   Вверх
tab
Дата 7.10.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.10.2006
Где: RF, Dolgopa

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



На сколько я понял, при создании объектов и загрузке их в кучу, происходит автосборка, когда объем занятой части кучи превышает некую установленную величину. Подскажите плз, кто знает, размер кучи, когда начинает работать автосборка.
PM MAIL   Вверх
ivashkanet
Дата 7.10.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



tab, Void же дал ссылку  smile 

P.S. Вроде так: для первого поколения -- 256 Кб, второго --2 Мб, третьего 10Мб. Первые два числа могут меняться в зависимости от системы
PM MAIL WWW ICQ   Вверх
tab
Дата 8.10.2006, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.10.2006
Где: RF, Dolgopa

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



Спасибо mr.DUDA, ivashkanet,Void

Это сообщение отредактировал(а) tab - 8.10.2006, 01:44
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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