powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Механизм подсчета ссылок и освобождения объекта
13 сообщений из 13, страница 1 из 1
Механизм подсчета ссылок и освобождения объекта
    #35716827
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как происходит автоматическое уничтожение объектов в системах поддерживаюх этот механизм?
Я так понимаю это основано на подсчете ссылок. Если число ссылок равно 0 становится, то объект уничтожается.
Но вот пример:
Код: plaintext
1.
2.
3.
a = new A(); //создали объект типа A и присвоили ссылку на него a. Число ссылок  1 .
a.b = new B(); //аналогично для объект типа B
a.b.a = a; //теперь ссылок на первый объект  2 .
a = NULL; //уменьшаем число ссылок. Если бы было  0 , то уничтожился бы, но у нас  1 
В итоге имеем "зависший" объект, на который уже никак не подействоватьС уважением, Naf
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35716986
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в VB6 мы использовали события для разрыва циклической ссылки.
В вашем случае свойства b.a нет, есть b.GetParent(). Получается что ссылка на родителя хранится только внутри методов с ней работающих.
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35716990
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoffв VB6 мы использовали события для разрыва циклической ссылки.
В вашем случае свойства b.a нет, есть b.GetParent(). Получается что ссылка на родителя хранится только внутри методов с ней работающих.
причем тут родитель?
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35717097
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Притом что обычно классы неравнозначны в графе объектов. А у вас как?
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35717167
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я решил эту проблему так:

Когда программа ожидает сообщений от Windows, и никакие потоки не используют
эти обьекты:

1) Создаю массив vector<Object*>
2) Я добавляю в массив все глобальные указатели, которые указывают на TForm
или потомков TForm
3) Я добавляю в массив все "созданные" обьекты окон (это TForm)
4) У обьектов в массиве, проверяю все свойства (члены классов). И указатели
которые указывают на
TForm (или потомков TForm), и если их нет в массиве, добавляю их в массив.
5) Если что то было добавлено в 4), то перейти на 4)
6) Удаляю все обьекты, которые не присутствуют в массиве.

Но хочу переделать на более оптимальный вариант.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35717270
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf пишет:

> Как происходит автоматическое уничтожение объектов в системах
> поддерживаюх этот механизм?

Вы наверное имели в виду автоматическая сборка ненужной памяти ?
Объекты никто не уничтожает.

> Я так понимаю это основано на подсчете ссылок. Если число ссылок равно 0
> становится, то объект уничтожается.
> Но вот пример:

Далеко не всегда.

> a = new A(); //создали объект типа A и присвоили ссылку на него a. Число ссылок *1*.
> a.b = new B(); //аналогично для объект типа B
> a.b.a = a; //теперь ссылок на первый объект *2*.
> a = NULL; //уменьшаем число ссылок. Если бы было *0*, то уничтожился бы, но у нас *1*
>
> В итоге имеем "зависший" объект, на который уже никак не подействоватьС
> уважением, Naf

Это как раз основной из недостатков подсчёта ссылок - надо разрывать циклические
ссылки.

Некоторые GC просто проходят по графу ссылок и считают эти ссылки. Тогда можно
объекты удалить. Некоторые вообще не используют GC.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35717272
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv пишет:

> объекты удалить. Некоторые вообще не используют GC.

Не GC, а подсчёт ссылок. Описался.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35717618
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, в .NET cборщик мусора умеет такую хрень обнаруживать.
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35717654
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечКстати, в .NET cборщик мусора умеет такую хрень
обнаруживать

Любой GC правильно работает с циклическими ссылками, иначе это не GC.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35717655
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч,
вот мне и интересно КАК?
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35717677
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafЯростный Меч,
вот мне и интересно КАК?Мне это тоже интересно :)
Вроде у Кнута в 1-м томе (или в 3) что-то было на эту тему. А в общем - алгоритмы над графами, поиск "островков" или что-то вроде этого
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35717692
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Морозов
Яростный МечКстати, в .NET cборщик мусора умеет такую хрень
обнаруживатьЛюбой GC правильно работает с циклическими ссылками, иначе это не GC. Не работали Вы, видимо, с JavaScript :)
(если " некоторые браузеры не могут что-то делать", то "JavaScript не может это что-то делать", за редкими исключениями)
...
Рейтинг: 0 / 0
Механизм подсчета ссылок и освобождения объекта
    #35718532
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafЯростный Меч,
вот мне и интересно КАК?

http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Механизм подсчета ссылок и освобождения объекта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]