Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Допустим я создаю переменную и потом присваиваю значение null Код: plaintext 1. 2. Насколько я понимаю, поскольку ссылок больше нет, то память должна с помощью GC высвобождаться? Я хочу что-бы это произошло немедленно, сразу после hw1 = null; И что-бы при этом отработал какой-либо метод класса HelloWolrd в котором я могу произвести дополнительные операции. Что мне нужно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 16:48 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Вообще говоря никак - так как GC-процес недетерминирован Ежели ваш объект держит какие-то ресурсы которые хочется освободить как можно скорее - то см IDisposable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 16:57 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
если не вдаваться в подробности: o.Dispose(); GC.Collect(); но вообще такие вопросы обычно от неправильного планирования возникают. у меня например все вопросы которые я задал тут - все от того что толком ни кто не знают что мы делаем. если бы был нормальный менеджер проекта и команда заточенная именно под разработку хорошо спроектированного продукта то вопросов бы не было. а у нас что не мэн - то звезда. причем небывалой величины :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 18:54 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Я рассматриваю такую задачу: есть класс, при создании нового обьекта счётчик увеличивается, при уничтожении обьектов - счётчик уменьшается. Допустим я пишу данный класс для стороннего использования и должен быть уверен, что как только все ссылки утеряны на переменную, обьект уничтожается и счётчик уменьшается. Исходим из того, что заставить сторонних разработчиков выполнять какой либо специальный метод у обьекта класса или использовать using () - невозможно. Единственно, за что можно зацепиться, когда реально происходит высвобождение срабатывает метод финализации, в котором счётчик уменьшается. Практика показала, что hw1 = null не приводит к срабатыванию ни ~MyClass ни к срабатывнию Dispose при реализации интерфейса IDispose; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 19:23 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Может это тебе поможет: Как писать деструкторы класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 14:34 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Прочитал, толково. Однако про null ничего там нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 15:48 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemIDisposableClassTopic.htm там очень ясно написано когда вызываются Finalize() и Dispose() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 16:12 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Все равно не хватает детерминированного деструктора. Нет единого виртуального метода для разрушения любого объекта, как например Free или Destroy в дельфи, и это очень огорчает. Внутри Finalize некоторые методы объектов уже нельзя использовать - я на этот скрипучий пень уже налетел. А еще крайне недостает виртуальных конструкторов. Вот. А еще в наследнике нельзя при переопределении виртуального метода нельзя изменить зону видимости protected -> public, и это странное ограничение старого дельфиста весьма озадачивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 18:09 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Dankov Все равно не хватает детерминированного деструктора. Угу - это главная проблема GC - и в .Net и в Java. А вот в том же Power Builder - объекты можно удалять и принудительно и автоматически! А еще крайне недостает виртуальных конструкторов. деструкторов наверно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 18:21 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
D C# нет такого понятия как в классическом С++! Здесь работает сборщик мусора! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 07:02 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
авторА еще крайне недостает виртуальных конструкторов. деструкторов наверно :) Нет, именно конструкторов. Компонентная модель в дельфи стала невероятно удачной только в силу того факта, что не нужно было в каждом наследнике заново пересоздавать конструктор Create с параметром aOwner. А в C# нет возможности автоматом унаследовать параметризованный конструктор. И уже в силу этого компонентная модель сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 10:00 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
авторD C# нет такого понятия как в классическом С++! Здесь работает сборщик мусора! Да пусть себе работает, кто ему мешает. Это с возможностью иметь детерминированные деструкторов - перпендикулярно! Ресурсы как правило ограничены. Это и хендлы, и количество коннектов, и банально память. И вполне может быть, что ресурс закончится быстрее, чем приложение дождется пока GC придет с лопатой. В этом случае сильно бы помогло наличие детерминированного деструктора. А GC пущай освобождает то, что программист сам не прибил. Не вижу препядствий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 10:07 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
авторА в C# нет возможности автоматом унаследовать параметризованный конструктор. Чего, правда что-ли? Сам пока не проверял. В Java это точно есть. Какая причина не делать это в C# - непонятна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 10:19 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
В C# так же как и в C++ конструкторы а также оператор присваивания не наследуются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 11:47 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
авторВ C# так же как и в C++ конструкторы а также оператор присваивания не наследуются Вот C++ не надо вспоминать, а то сейчас стошнит. C# - синтетический язык, вобравший типа все лучшее из 15-ти языков после многолетних исследований с затратами под млрд президентов. Что не мешает удивляться некоторым очевидным недостаткам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 12:37 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
to Dankov: Я читал что от C,C++,Java,Pascal, Biasic. А какие еще языки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 13:10 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Dankov Вот C++ не надо вспоминать, а то сейчас стошнит При всем уважении - не на те вещи у вас аллергия. Эти ограничения в С++ и в C# появились не случайно - а как раз в результате "многолетних исследований с затратами под млрд президентов" P.S> softbuilder@inbox.ru а вы уверены что в Java не тоже самое - а то я с ней не знаком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 13:11 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
to funikovyuri: Возможно я не прав. Попробую уточнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 13:33 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Да, признаю ошибочность своего утверждения. Возможен только вызов конструктора супер-класса. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Так как конструктор не наследуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 13:48 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
А теперь главный вопрос - а в Delphi - конструкторы наследуются? точно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 14:07 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Народ, по-моему, вы гоните! В C# конструкторы наследуются: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 14:34 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Да не, Петрович, это вы неправильно понимаете что значит "наследуется" - а значит что в случае наследования конструкторов будет компилиться такой пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 14:41 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
авторА теперь главный вопрос - а в Delphi - конструкторы наследуются? точно? Совершенно точно. С первых дней существования дельфи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 17:29 |
|
||
|
Высвобождение ресурсов
|
|||
|---|---|---|---|
|
#18+
Ну тогда это даже чуть чуть странно - с одной стороны C++,Java,C# - с другой Delphi. Причем автор у Delphi и C# один и тот же :) Ok - будет время я покопаю в этом направлении - интересно чем Хейлсберг руководствовался при написании Object Pascal. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2004, 18:14 |
|
||
|
|

start [/forum/topic.php?fid=20&startmsg=32421333&tid=1439494]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
128ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 276ms |
| total: | 490ms |

| 0 / 0 |
