|
c# New item to list box
|
|||
---|---|---|---|
#18+
Залез в один код, и вижу Код: c# 1.
В него идёт добавление Код: c# 1.
А потом, делается Код: c# 1.
Старый создано - добавленный item теряется ведь? И ведёт это к утечке памяти. Или он потом удаляется, при выходе из метода? Или всё же счётчик ссылок не уменьшается,и он не удаляется ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2018, 13:14 |
|
c# New item to list box
|
|||
---|---|---|---|
#18+
Если заменяемый Item не держит ссылок на какие-либо другие объекты (в т.ч. через event handler'ы), и никакие другие объекты не держат ссылок на заменяемый Item, то этот Item будет уничтожен при очередной сборке мусора. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2018, 16:52 |
|
c# New item to list box
|
|||
---|---|---|---|
#18+
А как сборщик мусора поймёт, что при присвоение нового item Код: c# 1.
Созданный ранее "new Item()" Код: c# 1.
Больше нигде не используется ? Ведь мы в наглую переприсвоили элемент - List'a ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2018, 17:45 |
|
c# New item to list box
|
|||
---|---|---|---|
#18+
Ну так ссылка на старый объект пропадет. List - это просто оболочка над массивом. В данном случае - массивом ссылок. Перезаписали ссылку в элементе - всё, нет старой ссылки ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2018, 17:48 |
|
c# New item to list box
|
|||
---|---|---|---|
#18+
Я просто думал по логике, что счётчик ссылок хранится в самом - созданном объекте. И если молча, задать массиву - новый элемент, то счётчик ссылок, у созданного "new Item()" Код: c# 1.
Не уйдёт в DEC и при сборщике муссора, он будет думать что всё ещё этот "new Item()" используется. Хотя элемент уже где - то плавает... Но если я не прав, и он всё таки как - то удаляет, ранее созданный "new Item()" после внезапного присвоения нового - существующего элемента на старое место. То это хорошо ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2018, 18:01 |
|
c# New item to list box
|
|||
---|---|---|---|
#18+
ГирлионайльдоЯ просто думал по логике, что счётчик ссылок хранится в самом - созданном объекте. И если молча, задать массиву - новый элемент, то счётчик ссылок, у созданного "new Item()" Нет никакого счетчика ссылок - это же не COM. В .Net факт того, что содержимое объекта в куче при сборке мусора можно удалить, определяется на этапе marking этой самой сборки мусора. Почитайте Рихтера, у него подробно описано, как это делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2018, 18:19 |
|
c# New item to list box
|
|||
---|---|---|---|
#18+
ГирлионайльдоЯ просто думал по логике, что счётчик ссылок хранится в самом - созданном объекте.Не стоит тащить в .NET логику из каких-то других языков. По GC полно материала, и вкратце, и подробного, почитайте на досуге ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2018, 19:03 |
|
|
start [/forum/topic.php?fid=20&fpage=29&tid=1399285]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 148ms |
0 / 0 |