Здравствуйте, ShulapovMax, Вы писали:
SM>Настоящий программист может написать утечку памяти на любом языке
Если язык не предусматривает динамического управления памятью -- то не бывает даже у программиста-подделки.
... << RSDN@Home 1.1.0 stable >>
Re[2]: Кто сказал что в .net утечек памяти не бывает?
Здравствуйте, fddima, Вы писали: F> Если язык не предусматривает динамического управления памятью -- то не бывает даже у программиста-подделки.
а что такое неформально утечка памяти? это выделение её (создание объекта) и НЕвозвращение её (удаление объекта) системе (фреймворку).
у меня такое иногда случается, было например, GDI объекты утекали, а вот сейчас с памятью. дело в том, что фреймворк не удаляет объект, пока на него есть ссылки. вот где-то ссылки я коллекционирую
Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re[3]: Кто сказал что в .net утечек памяти не бывает?
> у меня такое иногда случается, было например, GDI объекты утекали, а вот сейчас с памятью. дело в том, что фреймворк не удаляет объект, пока на него есть ссылки. вот где-то ссылки я коллекционирую
static ArrayList gargbage;
Здесь?
(с) TK
Posted via RSDN NNTP Server 1.8 beta
Re[4]: Кто сказал что в .net утечек памяти не бывает?
Здравствуйте, Воронков Василий, Вы писали:
>> у меня такое иногда случается, было например, GDI объекты утекали, а вот сейчас с памятью. дело в том, что фреймворк не удаляет объект, пока на него есть ссылки. вот где-то ссылки я коллекционирую
ВВ>static ArrayList gargbage;
ВВ>Здесь?
ВВ>(с) TK
Секундочку, щас проверю!
Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re[3]: Кто сказал что в .net утечек памяти не бывает?
Здравствуйте, ShulapovMax, Вы писали:
SM>у меня такое иногда случается, было например, GDI объекты утекали, а вот сейчас с памятью. дело в том, что фреймворк не удаляет объект, пока на него есть ссылки. вот где-то ссылки я коллекционирую
Трудно сказать... я вроде пока не коллекционирую... а там будет видно
... << RSDN@Home 1.1.0 stable >>
Re[5]: Кто сказал что в .net утечек памяти не бывает?
Здравствуйте, Mishka, Вы писали:
M>Моё любимое место — это Session в ASP.NET. Запихиваешь туда всё подряд, а потом забываешь чистить.
Ну это не совсем утечка. Сессия рано или поздно умрет, при этом помрет и твой мусор. Вот если ты напихаешь в Application тогда да, будет течь пока не превысит working set.
Здравствуйте, AndrewVK, Вы писали:
AVK>Ну это не совсем утечка. Сессия рано или поздно умрет, при этом помрет и твой мусор. Вот если ты напихаешь в Application тогда да, будет течь пока не превысит working set.
или пока апликейшн не грохнется
... << RSDN@Home 1.1.2 stable >>
Re[2]: Кто сказал что в .net утечек памяти не бывает?
Здравствуйте, ShulapovMax, Вы писали:
SM>Настоящий программист может написать утечку памяти на любом языке
достаточно вставить бесконечный цикл в какой-нить финалайзер. С того момента, как он будет вызван — память начнет утекать до самой смерти процесса. Ловкость рук, и никакого мошенства
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[2]: Кто сказал что в .net утечек памяти не бывает?
Здравствуйте, Дарней, Вы писали:
Д>достаточно вставить бесконечный цикл в какой-нить финалайзер. С того момента, как он будет вызван — память начнет утекать до самой смерти процесса. Ловкость рук, и никакого мошенства
Если финалайзер не завершается в течении определенного времени, объект грохается по-черному
... << RSDN@Home 1.1.3 beta 1 >>
Re[3]: Кто сказал что в .net утечек памяти не бывает?
Здравствуйте, SiAVoL, Вы писали:
SAV>Здравствуйте, Дарней, Вы писали:
SAV>Если финалайзер не завершается в течении определенного времени, объект грохается по-черному
источник информации — в студию!
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[4]: Кто сказал что в .net утечек памяти не бывает?
Здравствуйте, Дарней, Вы писали: SAV>>Если финалайзер не завершается в течении определенного времени, объект грохается по-черному Д>источник информации — в студию!
Признаю свою ошибку, никто его не грохнет... Но все последующие объекты будут финализироваться.
И как говорится код в студию
class Class1
{
[STAThread]
static void Main(string[] args)
{
BadFinalize obj1 = new BadFinalize();
GoodFinalize obj2 = new GoodFinalize();
obj1 = null;
obj2 = null;
Clear();
obj2 = new GoodFinalize();
Clear();
Console.Read();
}
static void Clear()
{
GC.Collect();
Console.WriteLine("Garbage clear!");
}
}
public class BadFinalize
{
public BadFinalize()
{
Console.WriteLine("BadFinalize created");
}
~BadFinalize()
{
for(;;)
{
Console.WriteLine("Finalizing....");
System.Threading.Thread.Sleep(2000);
}
}
}
public class GoodFinalize
{
public GoodFinalize()
{
Console.WriteLine("GoodFinalize created");
}
~GoodFinalize()
{
Console.WriteLine("DEAD!");
}
}
Вот что выйдет на консоль
BadFinalize created
GoodFinalize created
Garbage clear!
DEAD!
Finalizing....
GoodFinalize created
Garbage clear!
Finalizing....
Finalizing....
Ну и "Finalizing...." будет появляться еще ОЧЕНЬ долго, пока ентер не нажмешь
Т.о. мы видим, что создается второй поток завершения.
... << RSDN@Home 1.1.3 beta 1 >>
Re[5]: Кто сказал что в .net утечек памяти не бывает?
Здравствуйте, SiAVoL, Вы писали:
SAV>[/c#] SAV>Вот что выйдет на консоль SAV>
SAV>BadFinalize created
SAV>GoodFinalize created
SAV>Garbage clear!
SAV>DEAD!
SAV>Finalizing....
SAV>GoodFinalize created
SAV>Garbage clear!
SAV>Finalizing....
SAV>Finalizing....
SAV>
SAV>Ну и "Finalizing...." будет появляться еще ОЧЕНЬ долго, пока ентер не нажмешь SAV>Т.о. мы видим, что создается второй поток завершения.
обрати внимание — у тебя создается два объекта GoodFinalize, но "DEAD!" выдается только один раз. Значит — один "хороший" финалайзер был вызван перед "плохим" и выдал свое сообщение. А второй должен идти после, но до него очередь никогда не дойдет. Поскольку GC не будет освобождать его память до вызова финалайзера — объект так и будет "висеть" в памяти до второго пришествия
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[5]: Кто сказал что в .net утечек памяти не бывает?
Здравствуйте, Дарней, Вы писали:
Д>обрати внимание — у тебя создается два объекта GoodFinalize, но "DEAD!" выдается только один раз.
Мдя... че-то я сглючнул. Где-то я там увидел, что второй раз GoodFinalize снова умирает. Сам же поставил тест и сам же в нем запарил