|
3 / 3 / 1
Регистрация: 11.03.2019
Сообщений: 42
|
|
Как уничтожить экземпляр класса (объект)?21.06.2019, 16:48. Показов 30467. Ответов 119
Я столкнул с такой проблемой. Я не могу понять как удалять объекты класса(экземляры). Читая интернет я вижу что "мусорщик" должен автоматически удалять те объекты, на которые нет указателя, но у меня это не работает. Подскажите как решить. Вот видео где всё показано, по нажатию кнопки в указатель записывается новый объект, но старый не удаляется, это видно по увеличению кол-ва оперативной памяти занимаемого приложением.
https://www.youtube.com/watch?... e=youtu.be Кликните здесь для просмотра всего текста
1
|
|
| 21.06.2019, 16:48 | |
|
Ответы с готовыми решениями:
119
Как в случае с Dependency Injection внедрять отдельный экземпляр некоторого класса только лишь для одного другого класса Как увидеть объект Session и объект Server из модуля класса? Как создать экземпляр класса по условию |
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 28.06.2019, 17:18 | |
|
0
|
|
|
|
||||
| 28.06.2019, 17:22 | ||||
null значением
0
|
||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 28.06.2019, 17:24 | ||
|
При этом в подавляющем большинстве графов ссылок характерным для ООП GC без предварительного принудительного разрыва взаимосвязей вообще ничего убрать не в состоянии даже при принудительном запуске уборки. Никакой автоматики в вопросе управления жизненным циклом инстансов GC не дает в принципе. А отсюда и склонность к утечкам и некорректному с точки зрения ООП поведению. И лечение этих болячек абсолютно аналогично ручному высвобождению памяти/разрушению инстансов в языках без какой либо автоматики вообще. Вот для этого Disposе и прикостылили - полный аналог паскалевских деструкторов с ручным вызовом.
0
|
||
|
|
||
| 28.06.2019, 17:24 | ||
|
0
|
||
|
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
|
| 28.06.2019, 17:27 | |
|
skilllab, у MS не все абзацы информации о Dispose() являются актуальными и/или стопроцентно правильными для практического применения.
null просто позволяет разрезать ветки объектов на более мелкие ветки, что в целом не является обязательным. Общая логика учёта памяти сами программистом играет намного большую роль.
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 28.06.2019, 18:02 | ||||
|
Добавлено через 2 минуты Добавлено через 26 минут
0
|
||||
|
14733 / 9507 / 1363
Регистрация: 21.01.2016
Сообщений: 35,869
|
|
| 30.06.2019, 07:02 | |
|
Fulcrum_013, Dispose занимается ровно тем, что в нём будет написано. За уничтожение объекта этот метод не отвечает. Прекращайте нести бред откровенный.
1
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 30.06.2019, 07:22 | ||
|
0
|
||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 30.06.2019, 16:18 | |
|
Fulcrum_013, какое это имеет отношение к изначальному вопросу об уничтожении managed обьекта?
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 30.06.2019, 18:39 | |
|
nicolas2008, Прямое. Принудительное уничтожение инстанса осуществляется только вручную вызовом специально написанного для этого Dispose. Буфер же объекта когда нибудь потом заберет GC. При этом без такого ручного уничтожения инстанса уборка может и вообще не состоятся что скорее всего у ТС и происходит.
0
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 30.06.2019, 22:33 | |
|
Fulcrum_013, может хватит уже демонстрировать свое невежество?
![]() В C++ есть операторы new и delete, которые служат для создания и удаления обьекта соответственно.В .NET есть только new, а аналога delete нету.Вопрос автора был более чем конкретен. А ваши пространственные рассуждения и вымышленная класификация удалений никого не интересуют. Не надо усложнять и разводить ложную философию. Удаление обьекта - это освобождение памяти обьекта. Dispose - это вспомогательная фича .NET для детерминированного во времени удаления связанных unmanaged ресурсов, которыми владеет данный обьект. Сам обьект удаляется только сборщиком мусора.
2
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 01.07.2019, 00:06 | |||
|
nicolas2008, Хватит демонстрировать ваше невежество.
В с++ есть операторы new и delete которые создают и уничтожают буфер в куче. А так же есть автоматическое управление жизненным циклом объекта, которое гарантрует автоматический вызов конструктора сразу после выделения буфера типа класса и деструктора перед удалением такого буфера, которая работает для инстансов размещенных где угодно (на стеке, в теле хозяина) а не только на куче. В шарпе автоматика управления жизненным циклом объекта отсутсвует от слова совсем. Удалением же буферов GC занимается отложенно. Но инстанс живущий в буфере все равно разрушать необходимо вовремя (сразу при выходе из скопа, обнулении ссылки и т.п.) а не отложенно для обеспечения корректности поведения. Вот для этого Dispose - аналог деструктора с ручным вызовом и прикрутили. Вот об этом автор вопроса как раз и спрашивает. Добавлено через 5 минут Добавлено через 2 минуты Они живут по разным правилам. И именно то что эти правила абсолютно противоположны и делает GC абсолютно бесполезным в ООП-языке.
0
|
|||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|||||||||||||||||||||||||
| 01.07.2019, 01:06 | |||||||||||||||||||||||||
![]() ![]() Я тут подготовив пару примерчиков. И... о чудо! GC смог удалить обьекты без ручного вызова Dispose? Как так получилось? Теперь у приложения будет "некорректное поведение"?
0
|
|||||||||||||||||||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 01.07.2019, 01:08 | |||
|
Добавлено через 45 секунд
0
|
|||
| 01.07.2019, 01:26 | |
|
Не по теме: Fulcrum_013, умный человек умеет признать свои ошибки (это не о вас).
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||
| 01.07.2019, 01:26 | ||||||||
0
|
||||||||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|||
| 01.07.2019, 01:44 | |||
|
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 01.07.2019, 01:58 | |||
|
Добавлено через 29 секунд
0
|
|||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|||
| 01.07.2019, 02:08 | |||
|
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 01.07.2019, 02:18 | ||||
|
nicolas2008, Там вообще никакого графа нет. И все разруливаемо вооще в компайлтайме.
Вот тут вам пример графа. C# vs Kotlin Это без инстаного разрушения инстансов при разрыве ссылок работать не будет в принципе. Именно поэтому для ООП автоматика нужна именно слежения за жизненным циклом. Тут другие правила удаления. Понятия нужность/ненужность объекта нет. Есть понятие возможность/невозможность существования и оно никак не зависит от наличия ссылок на него со стороны других объектов. Добавлено через 4 минуты Ну и вооще алгоритмы принято анализировать на примерах наборов данных а не на каком то коде. Код вообще ничего не способен доказать.
0
|
||||
| 01.07.2019, 02:18 | |
|
Как создать экземпляр класса библиотеки Как получить искомый экземпляр класса одной поисковой строкой LINQа Ссылка на объект не указывает на экземпляр объекта Ссылка на объект не указывает на экземпляр объекта Ссылка на объект не указывает на экземпляр объекта. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|