|
куда девается мусор?
|
|||
---|---|---|---|
#18+
Garbage Collectior в C#.NET собирает мусор, поэтому объекты можно не удалять. А как дела обстоят в раннем Бейсике? VB 6.0 и VBA. Там надо удалять? Если нет, то как без коллектора справляется? И почему C# без коллектора не справляется? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2011, 21:13 |
|
куда девается мусор?
|
|||
---|---|---|---|
#18+
В VB(A) имеется механизм очистки памяти от переменных и объектов, когда на них нет ссылок (т.е. с уничтожением ссылки программно или неявно по завершении области видимости). Само собой, завершение программы завершает области видимости всех переменных и зачищает память. Memory leak на VB(A) - явление редкое, и обычно это явный косяк разработчика. Типа двух структур, в каждой из которых есть компонент - вторая структура, и после любого удаления таких переменных у каждой ещё останется ссылка на неё из второй переменной. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2011, 21:35 |
|
куда девается мусор?
|
|||
---|---|---|---|
#18+
Charles WeylandGarbage Collectior в C#.NET собирает мусор, поэтому объекты можно не удалять. А как дела обстоят в раннем Бейсике? VB 6.0 и VBA. Там надо удалять? Если нет, то как без коллектора справляется? И почему C# без коллектора не справляется? Почему это С# не справляется без коллектора? Коллектор периодически разбирает мусор, незаметно для вас. Даже если вы написал obj = nothing, то и это не факт, что произойдёт сбор мусора. А в VB(A) напиши Set obj = Nothing - и от твоей переменной ничего не останется. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 11:53 |
|
куда девается мусор?
|
|||
---|---|---|---|
#18+
NullUzerCharles WeylandGarbage Collectior в C#.NET собирает мусор, поэтому объекты можно не удалять. А как дела обстоят в раннем Бейсике? VB 6.0 и VBA. Там надо удалять? Если нет, то как без коллектора справляется? И почему C# без коллектора не справляется? Почему это С# не справляется без коллектора? Коллектор периодически разбирает мусор, незаметно для вас. Даже если вы написал obj = nothing, то и это не факт, что произойдёт сбор мусора. А в VB(A) напиши Set obj = Nothing - и от твоей переменной ничего не останется. :) Если у C# убрать коллектор - то будет происходить утечка памяти - я это имел в виду. У VB6 коллектора нет. Тем не менее, заботиться об удалении объектов из памяти не надо. Как так? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 16:26 |
|
куда девается мусор?
|
|||
---|---|---|---|
#18+
У C# нельзя убрать сборщик мусора, точнее даже не у C#, а .NET CLR . Сборщик нужен для оптимизации работы всей программы. Весь фрейморк завязан на классах, создание классов происходит постоянно. Если же удалять классы после того, как они уже не нужны - то на это нужно время, и падает производительность. Удаление ненужных объектов будет производиться во время, когда программа "простаивает" и других случаях. В VB6 нет сборщика, так как среда VB сама заботится об ссылках на объекты, и чистит память когда нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 21:30 |
|
куда девается мусор?
|
|||
---|---|---|---|
#18+
Charles WeylandЕсли у C# убрать коллектор - то будет происходить утечка памяти - я это имел в виду. У VB6 коллектора нет. Тем не менее, заботиться об удалении объектов из памяти не надо. Как так?Есть у VB6 уборка мусора, есть. Но в VB6 она срабатывает сразу как только объект становится не нужным. А в .Net сборка мусора отложенная - там объект подлежащий удалению просто помечается как "удаленный" и все. А потом, когда программа завершает активную работу и начинает ждать следующей команды от пользователя - просыпается сборщик и уже физически освобождает все ранее помеченные к удалению куски памяти. Пометить кусок памяти как освобожденный быстрее чем физически его чистить, отсюда все эти сборщики и создаются. В некоторых системах (в тех же .Net и Java) они есть по умолчанию. В других их можно писать специально. Короче говоря, читай и просвещайся: http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 23:17 |
|
|
start [/forum/topic.php?fid=60&fpage=104&tid=2158798]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
137ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 230ms |
0 / 0 |