Объявление

Односложные и бессмысленные темы, не несущие полезную нагрузку или не содержащие в себе вопрос, будут удаляться!

#26 20-01-12 17:52:21

MOP3E
Участник
Здесь с 05-10-09
Сообщений: 4,208
Windows 7Firefox 3.6

Re: Delphi метрв!

pavel2403 пишет:

в VB я могу вызвать Set MyObject=Nothing сколько угодно раз, даже так на всякий случай, лучше сделать это дважды, чем не сделать вобще. Кстати и под Vb.Net эта моя хорошая привычка осталась поэтому в моем коде сборщику мусора делать практически нечего.

Насколько я знаю, эта команда просто убирает ссылку на объект, но не выгружает его из памяти. Сборщик мусора выгрузит "ненужный" объект тогда, когда ему бдет удобно, даже если вручную обрубить все ссылки.
Вот стандартная конструкция в C#:

for(int i = 0; i < 100; i++)
{
    //область видимости переменной i
}
//здесь ссылки на переменную i отсутствуют и она может быть выгружена сборщиком мусора
for(int i = 0; i < 100; i++)
{
    //а здесь выделена память под НОВУЮ переменную i
}
//которая опять будет выгружена из памяти сборщиком мусора где-то после этой строки

Фишка в том, что что бы ты не делал - сборщик мусора всё равно будет чистить память тогда, когда ему это удобно.


Я не игрушечный. Я, б*я, коллекционный! (с) Duke Nukem Forever
Я не специалист по [вставить название]. Мне главное концептуально решить задачу! (с) АхаRu.
Линукс - это альтернативная ОС о которой известно, что она не является ОС ну вот просто ни разу. (с) Linups_Troolvalds.
А с какого такого перепугу пользователей линукса должно быть больше 1%? (с) petrun

Вне форума

#27 20-01-12 17:59:01

Babusha
Нехристь
Здесь с 12-03-10
Сообщений: 2,221
MacintoshSafari 5.0

Re: Delphi метрв!

Не представляю, кому  нафиг нужен дельфи, когда есть дотнет.


Удовлетворен GNU/Linux (с) Linups_Troolvalds
13-значный пароль, состоящий из одних цифр, ломается за полчаса (с) Rector. Авторитетный Хакер у себя в классе
Я тебя просто отсюда выпилю.  (с) Рехтур. Взламывает анусы по ойпи.

Вне форума

#28 20-01-12 22:08:58

pavel2403
Разбанен
Откуда: Санкт-Петербург
Здесь с 06-10-09
Сообщений: 1,129
Windows XPInternet Explorer 7.0

Re: Delphi метрв!

MOP3E пишет:
pavel2403 пишет:

в VB я могу вызвать Set MyObject=Nothing сколько угодно раз, даже так на всякий случай, лучше сделать это дважды, чем не сделать вобще. Кстати и под Vb.Net эта моя хорошая привычка осталась поэтому в моем коде сборщику мусора делать практически нечего.

Насколько я знаю, эта команда просто убирает ссылку на объект, но не выгружает его из памяти. Сборщик мусора выгрузит "ненужный" объект тогда, когда ему бдет удобно, даже если вручную обрубить все ссылки.
Вот стандартная конструкция в C#:

for(int i = 0; i < 100; i++)
{
    //область видимости переменной i
}
//здесь ссылки на переменную i отсутствуют и она может быть выгружена сборщиком мусора
for(int i = 0; i < 100; i++)
{
    //а здесь выделена память под НОВУЮ переменную i
}
//которая опять будет выгружена из памяти сборщиком мусора где-то после этой строки

Фишка в том, что что бы ты не делал - сборщик мусора всё равно будет чистить память тогда, когда ему это удобно.

Коллега, ты все перепутал, во втором примере с циклом, переменная уничтожиться вместе с окончанием процедуры, если она это не глобальная переменная, и это пример никакого отношения к ООП не имеет. А вот Set MyObject = Nothing это и есть уничтожение экземпляра объекта. к тому же в VB6 никакого сборщика мусора нет. Дело все в том, что по крайней мере в VB отсуствует наследование реализации а есть наследование интерфейсов. К тому же там реализован механизм абстрактных классов, то есть когда сам объект не создается а только наследуются его свойства и методы дочерними классами через интерфейс. в VB6, у абстрактного класса, может быть только один интерфейс, а вот в VB.Net-сколько угодно.


Господа, вы охуели. Все. ©Cэмен

Вне форума

#29 21-01-12 03:04:28

MOP3E
Участник
Здесь с 05-10-09
Сообщений: 4,208
Windows 7Firefox 3.6

Re: Delphi метрв!

pavel2403 пишет:

Коллега, ты все перепутал, во втором примере с циклом, переменная уничтожиться вместе с окончанием процедуры, если она это не глобальная переменная, и это пример никакого отношения к ООП не имеет.

Ну почему же? У Int32 (который в C# имеет псевдоним int) куча интерфейсов и методов, значит он объект. По крайней мере, в С# и VB.Net.


Я не игрушечный. Я, б*я, коллекционный! (с) Duke Nukem Forever
Я не специалист по [вставить название]. Мне главное концептуально решить задачу! (с) АхаRu.
Линукс - это альтернативная ОС о которой известно, что она не является ОС ну вот просто ни разу. (с) Linups_Troolvalds.
А с какого такого перепугу пользователей линукса должно быть больше 1%? (с) petrun

Вне форума

#30 21-01-12 10:38:54

pavel2403
Разбанен
Откуда: Санкт-Петербург
Здесь с 06-10-09
Сообщений: 1,129
Windows XPInternet Explorer 7.0

Re: Delphi метрв!

MOP3E пишет:
pavel2403 пишет:

Коллега, ты все перепутал, во втором примере с циклом, переменная уничтожиться вместе с окончанием процедуры, если она это не глобальная переменная, и это пример никакого отношения к ООП не имеет.

Ну почему же? У Int32 (который в C# имеет псевдоним int) куча интерфейсов и методов, значит он объект. По крайней мере, в С# и VB.Net.

Гы, точно... извини я и не заметил, потому как далек от синтаксиса C# sad


Господа, вы охуели. Все. ©Cэмен

Вне форума

#31 23-01-12 08:00:32

DonDublon3
Участник
Откуда: Уфа
Здесь с 06-05-10
Сообщений: 676
Windows XPOpera 11.60

Re: Delphi метрв!

pavel2403 пишет:

А вот Set MyObject = Nothing это и есть уничтожение экземпляра объекта.

Садись, два. Это уменьшение счетчика ссылок. Когда ссылки уменьшатся до нуля - тогда произойдет уничтожение (ну, должно, по крайней мере).

pavel2403 пишет:

к тому же в VB6 никакого сборщика мусора нет.

Ну да???
Опять двойка. Он там очень даже есть. Иначе бы программисту надо было вручную вызывать FreeMem. А VB-шники зачастую даже не знают, что это такое. Говорю это, как бывший VB-шник сам.

Babusha пишет:

Не представляю, кому  нафиг нужен дельфи, когда есть дотнет.

Моему ебучему (простите) начальству. До кучи с ведущим программистом, олдскульщиком, который прется от чистого С и линукса.


"Фу бля, крохобор вонючий" (с) Svart Testare

Вне форума

#32 23-01-12 13:37:06

Babusha
Нехристь
Здесь с 12-03-10
Сообщений: 2,221
MacintoshSafari 5.0

Re: Delphi метрв!

DonDublon3, ну так нефиг там работать, сам виноват.


Удовлетворен GNU/Linux (с) Linups_Troolvalds
13-значный пароль, состоящий из одних цифр, ломается за полчаса (с) Rector. Авторитетный Хакер у себя в классе
Я тебя просто отсюда выпилю.  (с) Рехтур. Взламывает анусы по ойпи.

Вне форума

#33 23-01-12 20:59:20

pavel2403
Разбанен
Откуда: Санкт-Петербург
Здесь с 06-10-09
Сообщений: 1,129
Windows XPInternet Explorer 7.0

Re: Delphi метрв!

DonDublon3 пишет:

pavel2403 пишет:
А вот Set MyObject = Nothing это и есть уничтожение экземпляра объекта.Садись, два. Это уменьшение счетчика ссылок. Когда ссылки уменьшатся до нуля - тогда произойдет уничтожение (ну, должно, по крайней мере).

DonDublon3 пишет:

pavel2403 пишет:
к тому же в VB6 никакого сборщика мусора нет.Ну да???
Опять двойка. Он там очень даже есть. Иначе бы программисту надо было вручную вызывать FreeMem. А VB-шники зачастую даже не знают, что это такое. Говорю это, как бывший VB-шник сам.

Me грустно плакает... А если серьезно то на...www.rsdn.ru/forum/vb/743187.flat.aspx и по  той же причине, Set MyObject =Nothing это именно уничтожение экземпляра дочернего класса созданного на основе описания виртуального класса. Что обязательно рекомендуется делать после окончания работы с экземпляром класса, во избежание утечки памяти. Вобщем о том, что ты де бывший VBшник лучше мне не заикайся даже, а то я могу оскорбиться сильно  и прямо тут же опустить тебя прилюдно по тому же VB 6. Это так, дружеский совет. Я на VB 6 не то что собаку, а три собаки сьел, и в том числе имел на нем и коммерческий успех.


Господа, вы охуели. Все. ©Cэмен

Вне форума

#34 24-01-12 07:57:32

DonDublon3
Участник
Откуда: Уфа
Здесь с 06-05-10
Сообщений: 676
Windows XPOpera 11.60

Re: Delphi метрв!

Babusha пишет:

DonDublon3, ну так нефиг там работать, сам виноват.

Ну, это уже другой вопрос.

pavel2403 пишет:

я могу оскорбиться сильно  и прямо тут же опустить тебя прилюдно

Попробуй. Я не корчу из себя доку, но что знаю - то знаю.

pavel2403 пишет:

А если серьезно то на...http://www.rsdn.ru/forum/vb/743187.flat.aspx и по  той же причине, Set MyObject =Nothing это именно уничтожение экземпляра дочернего класса созданного на основе описания виртуального класса.

Ты путаешь присваивание (Set MyObject =Nothing) и вызов метода, который освободит память.
В приведенной тобой ссылке сначала общаются некомпетентные люди, но в реплике Re[7] таки было четко сказано - присваивание понижает счетчик ссылок, объект убьётся когда таковой опустится до нуля. Это стандартное поведение сборщика мусора.
В VB6 сборщик имеется, иначе бы программисту приходилось вызывать освобождение памяти (на практике это значит - убиение объектов) внучную, а этого не требуется. Не путай присваивание и вызов.


"Фу бля, крохобор вонючий" (с) Svart Testare

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.008 сек, 7 запросов выполнено - Использовано памяти: 1.72 Мбайт (Пик: 1.81 Мбайт) ]